作者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