Scratch 再帰処理課題2
2023.05.17
Scratch 再帰処理課題2
課題内容
入力した自然数から、「フィボナッチ数」を計算して出力
フィボナッチ数列
$$ F_0=0 \\ F_1=1 \\ F_n=F_{n-1}+F_{n-2} \quad (n \geq 2\text{以上の整数}) $$
解答
解答を表示する
スプライト1
追加①追加②
@greenFlagが押されたとき
[自然数を入力してください。]と聞いて待つ
[x v]を(答え)にする
[フィボナッチ数 v]を(0)にする
フィボナッチ(x)::custom
([フィボナッチ数:]と(フィボナッチ数))と(2)秒言う
定義 フィボナッチ(x)
もし<<(x)=(0)>または<(x)=(1)>>なら
[フィボナッチ数 v]を(x)ずつ変える
でなければ
フィボナッチ((x)-(1))::custom
フィボナッチ((x)-(2))::custom
end
解説
解説を表示する
スプライト1
追加①追加②
@greenFlagが押されたとき
緑の旗が押されたとき、スクリプトを開始する
[自然数を入力してください。]と聞いて待つ
[x v]を(答え)にする
キーボードから入力した数値を変数「x」に格納する
[フィボナッチ数 v]を(0)にする
変数の初期設定
フィボナッチ(x)::custom
定義「フィボナッチ」を実行する
([フィボナッチ数:]と(フィボナッチ数))と(2)秒言う
スプライトの上に変数「フィボナッチ」のふきだしを表示する
定義 フィボナッチ(x)
定義「フィボナッチ」が呼び出されたとき、スクリプトを開始する
もし<<(x::custom)=(0)>または<(x::custom)=(1)>>なら
でなければ
end
引数「x」が0または1になるまで再帰を実行する
[フィボナッチ数 v]を(x::custom)ずつ変える
引数「x」を足し、変数「フィボナッチ」に格納する
フィボナッチ((x::custom)-(1))::custom
フィボナッチ((x::custom)-(2))::custom
引数「x」を減らして定義「フィボナッチ」を実行する
サンプル
sb3ダウンロード