平成24年秋期  午前問7

うどんさん  
(No.1)
問題
次の関数g(x)の定義に従ってg(4)を再帰的に求めるとき,必要な加算の回数は幾らか。

  g(x) = if x<2 then 1
              else g(x-1)+g(x-2)

どうしても解らなかった為質問しました。
この問題で求める「必要な加算の回数」ですが答えが「4回」のところ
自分でやると3回になってしまいます。

加算した対象ですが、
1回目 … g(4)から求めた g(3)+g(2)
2回目 … g(3)から求めた g(2)+g(1)
3回目 … g(2)から求めた g(1)+g(0)

解説にはg(2)から求めた加算が2度あり、それで4回になっているのですが
それで考えると
「if x<2 then 1」の条件に当てはまる答えが出るまでに発生した
g(x)=x≧2だった値の数(重複分含む)
という認識でいれば間違いないのでしょうか?
質問分かりにくくてすみません。
よろしくお願いします。
2021.02.08 22:27
関数従属さん 
AP シルバーマイスター
(No.2)
>「if x<2 then 1」の条件に当てはまる答えが出るまでに発生した
>g(x)=x≧2だった値の数(重複分含む)
>という認識でいれば間違いないのでしょうか?

上記の認識ともまた違うように思います。

加算回数についてはg(0)から順に考えていくとわかりやすいかと思います。

g(0)・・・加算回数0回
g(1)・・・加算回数0回
g(2)・・・加算回数1回([g(1):加算回数0回]+[g(0):加算回数0回]の為)
g(3)・・・加算回数2回([g(2):加算回数1回]+[g(1):加算回数0回]の為)
g(4)・・・加算回数4回([g(3):加算回数2回]+[g(2):加算回数1回]の為)

この後は、
g(5)・・・加算回数7回([g(4):加算回数4回]+[g(3):加算回数2回]の為)
g(6)・・・加算回数12回([g(5):加算回数7回]+[g(4):加算回数4回]の為)
g(7)・・・加算回数20回([g(6):加算回数12回]+[g(5):加算回数7回]の為)
・・・となっていきます。
2021.02.08 23:14
さん 
(No.3)
 g(4)
=g(3) + g(2)
={ g(2) + g(1) } + { g(1) + g(0) }
={ g(1) + g(0) + g(1) } + { g(1) + g(0) }
=1 + 1 + 1 + 1 + 1
よって加算は4回です

途中式ちゃんと書けば間違わない問題なのでめんどくさがらずに定義に従って関数開きましょう
2021.02.08 23:16
うどんさん  
(No.4)
あさん、関数従属さん
丁寧に解説いただきありがとうございます。
まだまだ数学の理解が及んでおらず、どちらの解き方も大変分かりやすく参考になりました。
もう一度解いてみます。
2021.02.09 07:51

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop