再帰処理を使ってとく問題なのですがどのようにやったらよいかわかりません。どなたか教えてください。
次のような規則で値の求まる関数を再帰的に定義し、その動作を確かめるプログラムを書く。
T0=T1=T2=0, T3=1
Tn+4=Tn+Tn+1+Tn+2+Tn+3
ただし、n>=0であるものとする。
入力と出力は以下の文を使う。
scanf("%d", &n);
printf("answer = %f\n", answer);
再帰処理
Re: 再帰処理
>Tn+4=Tn+Tn+1+Tn+2+Tn+3
何を書いてあるのかが わかりにくいですね.
関数T(x)の値の決定規則が
T(0)=0
T(1)=0
T(2)=0
T(3)=1
T(n+4) = T(n) + T(n+1) + T(n+2) + T(n+3) : (n+4)>=4 のとき
ということでしょうか?
この内容をそのまま書けば良いだけだと思いますが,不明な点は具体的にはどこにあるのでしょうか??
何を書いてあるのかが わかりにくいですね.
関数T(x)の値の決定規則が
T(0)=0
T(1)=0
T(2)=0
T(3)=1
T(n+4) = T(n) + T(n+1) + T(n+2) + T(n+3) : (n+4)>=4 のとき
ということでしょうか?
この内容をそのまま書けば良いだけだと思いますが,不明な点は具体的にはどこにあるのでしょうか??
Re: 再帰処理
たぶん、こんな風に考えるとわかりやすいかもしれません。ikkiss さんが書きました: 次のような規則で値の求まる関数を再帰的に定義し、その動作を確かめるプログラムを書く。
T0=T1=T2=0, T3=1
Tn+4=Tn+Tn+1+Tn+2+Tn+3
ただし、n>=0であるものとする。
関数Tに、0~2という引数を与えたら、0を返す。
関数Tに、3という引数を与えたら、1を返す。
それ以外の(つまり、4以上)の引数を与えたら、
そのときの引数より4つ前までの結果の合計を返す。
つまり、T(n-4)+T(n-3)+T(n-2)+T(n-1)を返す。
最終的な答えであるanswerは明らかに整数なので、%fを使う意味がよくわからないですね。ikkiss さんが書きました: 入力と出力は以下の文を使う。
scanf("%d", &n);
printf("answer = %f\n", answer);
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。