作者AA64 (蘇軍最高指揮部)
看板Visual_Basic
標題[VB6 ] 利用遞迴產生數列
時間Fri Aug 14 15:39:12 2009
這是一個使用遞迴函數的問題
小弟想了三,四天了 但是一直寫不出來或是寫錯
題目是 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)
1F:→ MOONRAKER:用function重寫,由sub呼叫function,陣列寫在sub裡面 08/14 17:19
2F:→ MOONRAKER:不然保證你再想三天也差不多 08/14 17:19
3F:→ MOONRAKER:……抱歉弄錯了,陣列寫在sub內頗麻煩,用全域比較容易 08/14 17:45
4F:推 salagadoola:如果把陣列放在sub裡的話,應該要用static吧 08/15 04:33