看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《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
kinkipikachu:感謝f大大的指導 好像有點通了^^ 10/30 06:45