如題,請問scratch可以做遞迴嗎?
謝謝。
Offline
一個副程式或函數重複呼叫自己本身,稱為遞迴(Recursive)。
遞迴有點像數學的歸納法,不過遞迴必須設定一個結束條件,
不然遞迴執行時會不斷呼叫自己,會形成無窮迴圈。
基本上,可以用遞迴解決的問題,都可以用迴圈來解決,
舉例來說計算N!
(迴圈)
ans = 1;
for (i = 2; i <= n; i++)
ans = ans * i;
(遞迴)
int f(int n) {
if (n == 1)
ans = 1;
else
ans = n * f(n-1);
return ans;
}
Scratch可以寫迴圈,但是想知道Scratch有沒有辦法寫遞迴?謝謝!
Offline
我還沒在Scratch中測試,但是Squeak4.1是可以的.
比如:
factorial
^self <2 ifTrue:[1] ifFalse:[self *(self-1) factorial]
如果用block做
fact:=[:x| x<2 ifTrue:[1] ifFalse:[x*(fact value:x-1) ]].
然後試試 printIt:
fact value: 5
這是Smalltalk語言啦,可以看網上有英文書 Squeak by Examples
Last edited by empt (2010-05-05 08:20:46)
Offline