作者fumizuki (蒙面加菲狮)
看板Visual_Basic
标题Re: [VB6 ] 请问要如何解释
时间Mon Oct 29 22:34:44 2012
※ 引述《kinkipikachu (提琴手的无弦之声)》之铭言:
: 各位大大好 小弟想要请问一个程式的问题
: 麻烦大大破除我的观念
: private sub form_activate()
: 'main program
: k=game(5)
: print k
: end sub
: function game(x)
: if (x>1) then
: game=x*game(x-1)
: else
: game=1 '主要是这一行
: end if
: end function
在函数中呼叫自己,这种演算法叫做递回
在函数中,与函数同名的变数为函数的传回值
所以 game = x * game(x - 1) 中
指派运算子(=)的右边为运算式,左边为变数(也就是函数传回值)
右边运算式的执行结果会指派给左边变数(函数传回值)
以game(5)为例
1. x = 5 进入函数#1
2. 判断 x > 1 为 True
3. 计算 x * game(x - 1) = 5 * game(5 - 1) = 5 * game(4)
4. x = 4 进入函数#2
5. 判断 x > 1 为 True
6. 计算 x * game(x - 1) = 4 * game(4 - 1) = 4 * game(3)
7. x = 3 进入函数#3
8. 判断 x > 1 为 True
9. 计算 x * game(x - 1) = 3 * game(3 - 1) = 3 * game(2)
10. x = 2 进入函数#4
11. 判断 x > 1 为 True
12. 计算 x * game(x - 1) = 2 * game(2 - 1) = 2 * game(1)
13. x = 1 进入函数#5
14. 判断 x > 1 为 False
15. #5传回 1
16. #4传回 2 * 1 = 2
17. #3传回 3 * 2 = 6
18. #2传回 4 * 6 = 24
19. #1传回 5 * 24 = 120
结果就等於 1 * 2 * 3 * 4 * 5 = 120
--
▃▅▇▆▄ ▆▂▃ `
逝去感情如何能留住,半点痴情遗留殊不易,██▅▇▄▃ ▇▃▂" .
█████████▃i ▁▄▇
更多凄凄惨惨的遭遇…………██▆▃ █▅▆▃ˍ▄*
◢ ▂█▄▇▅▂▌.
我不知道,王~八~蛋~~! ▂▆███ █▄▃ 。fumizuki。Check。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.194.223.71
1F:推 kinkipikachu:感谢f大大的指导 好像有点通了^^ 10/30 06:45