This is a read-only archive of the old Scratch 1.x Forums.
Try searching the current Scratch discussion forums.
  • Index
  •  » 中文
  •  » 請問scratch可以做遞迴嗎?

#1 2009-10-09 03:02:47

shining1211
Scratcher
Registered: 2009-10-09
Posts: 2

請問scratch可以做遞迴嗎?

如題,請問scratch可以做遞迴嗎?
謝謝。

Offline

 

#2 2009-10-09 05:13:41

mathematics
Scratcher
Registered: 2009-03-01
Posts: 1000+

Re: 請問scratch可以做遞迴嗎?

什麼是遞迴?

Offline

 

#3 2009-10-11 15:31:48

fg123
Scratcher
Registered: 2008-11-13
Posts: 1000+

Re: 請問scratch可以做遞迴嗎?

是啊,到底是什么?


Hai.

Offline

 

#4 2009-10-12 00:04:30

shining1211
Scratcher
Registered: 2009-10-09
Posts: 2

Re: 請問scratch可以做遞迴嗎?

一個副程式或函數重複呼叫自己本身,稱為遞迴(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

 

#5 2010-05-05 08:18:55

empt
Scratcher
Registered: 2010-05-05
Posts: 6

Re: 請問scratch可以做遞迴嗎?

我還沒在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

 

#6 2010-05-05 21:07:02

empt
Scratcher
Registered: 2010-05-05
Posts: 6

Re: 請問scratch可以做遞迴嗎?

粗粗看了,似乎暫時不能.原因是似乎在圖形編程環境下,不能將一個非數字/文字的object存入Scratch的變量.

如果可以存入變量就好辦了.各位如果試過可以存,請告訴我

Offline

 
  • Index
  •  » 中文
  •  » 請問scratch可以做遞迴嗎?

Board footer