[VB6 ] 利用遞迴產生數列

看板Visual_Basic作者 (蘇軍最高指揮部)時間14年前 (2009/08/14 15:39), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/3 (看更多)
這是一個使用遞迴函數的問題 小弟想了三,四天了 但是一直寫不出來或是寫錯 題目是 X(k+1)= X(k)/2 if X(k)=2n 3*X(k)+1 if X(k)=2n+1 條件:1.須利用遞迴函數(副程式) 2.當 X(k)=1 或 k>500 時停止 3.所建立的數據構成一個陣列 初始值X(1)=27 算式中X為一陣列 而k表示第k項 寫了很久 不是寫錯就是跑不出來 請各位幫幫忙好嗎 以下是我的程式碼 sub rec(k) dim X(1 to 500) if k=1 then X(k)=val(inputbox("輸入X(1)")) elseif X(k)=1 or k>500 then exit sub elseif X(k) mod 2 =0 then X(k+1)=X(k)/2 elseif X(k) mod 2 =1 then X(k+1)=X(k)*3+1 else end if call rec(k+1) end sub -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.223.226.130 ※ 編輯: AA64 來自: 61.223.226.130 (08/14 15:50)

08/14 17:19, , 1F
用function重寫,由sub呼叫function,陣列寫在sub裡面
08/14 17:19, 1F

08/14 17:19, , 2F
不然保證你再想三天也差不多
08/14 17:19, 2F

08/14 17:45, , 3F
……抱歉弄錯了,陣列寫在sub內頗麻煩,用全域比較容易
08/14 17:45, 3F

08/15 04:33, , 4F
如果把陣列放在sub裡的話,應該要用static吧
08/15 04:33, 4F
文章代碼(AID): #1AXHIXPp (Visual_Basic)
文章代碼(AID): #1AXHIXPp (Visual_Basic)