ページ 11

再帰関数で人口を計算

Posted: 2011年12月12日(月) 17:16
by saki
再帰関数で何年後かの人口を計算したいんですけど

どうやって再帰関数を応用すればよいかわかりません



何年後かの人口*=pow(人口増加率,年数)で求まると思うんですけど

再帰関数を使って求めるにはどうすればいいのでしょうか?

Re: 再帰関数で人口を計算

Posted: 2011年12月12日(月) 17:37
by beatle
N年後の人口はどうやって求めようとしてますか?
人口増加率が一定だと仮定するなら
N年後の人口 = 現在の人口 * pow(人口増加率, N)
となるでしょう。

こんな単純な計算に再帰を使っちゃいますか?

Re: 再帰関数で人口を計算

Posted: 2011年12月12日(月) 17:40
by saki
ありがとうございます
そうですね

でも課題には再帰関数を使えとあるので
どうやっても
再帰関数を使う必要がないように思うんですけど
よくわからないんですよね

Re: 再帰関数で人口を計算

Posted: 2011年12月12日(月) 17:42
by asd
例えば元の人口、1年の実行増加率、年数を引数に持つ再帰関数を作成して、
年数が0のとき・・・元の人口を返す
年数がnのとき・・・n-1年の人口に人口増加率をかける(n-1年の人口が再帰関数)

という感じではないでしょうか。

再帰関数の勉強課題といったところでしょうか。

Re: 再帰関数で人口を計算

Posted: 2011年12月12日(月) 17:55
by non
saki さんが書きました:再帰関数を使って求めるにはどうすればいいのでしょうか?
「再帰関数を使って」→「作って」ってことでしょうね。
で、再帰関数は何か作ったことがありますか?

Re: 再帰関数で人口を計算

Posted: 2011年12月12日(月) 18:00
by beatle
sakiさんのやりたい事は、突き詰めれば
「xのn乗を計算する再帰関数を実装せよ」
ということに帰着できそうですね。

答えそのものを書くのもアレなので、xのn倍を計算する再帰関数を定義してみます。

コード:

#include <stdio.h>

int f(int x, int n)
{
	if (n == 0)
	{
		return 0;
	}
	else
	{
		return x + f(x, n - 1);
	}
}

int main(void)
{
	printf("%d\n", f(4, 10));
	return 0;
}