再帰処理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ikkiss

再帰処理

#1

投稿記事 by ikkiss » 6年前

再帰処理を使ってとく問題なのですがどのようにやったらよいかわかりません。どなたか教えてください。
次のような規則で値の求まる関数を再帰的に定義し、その動作を確かめるプログラムを書く。
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);

アバター
usao
記事: 1547
登録日時: 6年前

Re: 再帰処理

#2

投稿記事 by usao » 6年前

>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 のとき

ということでしょうか?
この内容をそのまま書けば良いだけだと思いますが,不明な点は具体的にはどこにあるのでしょうか??

box
記事: 1737
登録日時: 8年前

Re: 再帰処理

#3

投稿記事 by box » 6年前

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)を返す。
ikkiss さんが書きました: 入力と出力は以下の文を使う。
scanf("%d", &n);
printf("answer = %f\n", answer);
最終的な答えであるanswerは明らかに整数なので、%fを使う意味がよくわからないですね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

non
記事: 1097
登録日時: 8年前

Re: 再帰処理

#4

投稿記事 by non » 6年前

フィボナッチ数列によく似てますね。
フィボナッチ 再帰 C言語 で検索したら、似たようなプログラムが得られるでしょう。
 
non

閉鎖

“C言語何でも質問掲示板” へ戻る