再帰関数を用いて奇数の合計を求める

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

再帰関数を用いて奇数の合計を求める

#1

投稿記事 by 高校生 » 9年前

コード:

#include <stdio.h>
#define NUM 11

int add(int n){
	if (n == 0) return 0;
	return add(n - 1) + n;
}

int main(){
	int i=NUM,g;

	g = add(i);

	printf("%d\n", g);

	return 0;
}
1から指定した数字までの奇数のみの数の合計を出したいのですが、うまくいきません。どうすればいいでしょうか。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 再帰関数を用いて奇数の合計を求める

#2

投稿記事 by みけCAT » 9年前

1から指定した数字までの奇数のみの数の合計を出すプログラムに書き換えて、コンパイルして、実行すればいいでしょう。

コード:

#include <stdio.h>
#define NUM 11

int add(int n){
	if (n < 1) return 0;
	if (n % 2 == 0) return add(n - 1);
	return add(n - 2) + n;
}

int main(void){
	int i=NUM,g;

	g = add(i);

	printf("%d\n", g);

	return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 再帰関数を用いて奇数の合計を求める

#3

投稿記事 by みけCAT » 9年前

変更点は
  • 0に限らず、nが1未満だったら0を返すようにした
  • nが奇数でなかったら、1を引いて奇数にするようにした
  • 1ではなく2を引くことで、奇数から直接次の奇数に行くようにした
です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

高校生

Re: 再帰関数を用いて奇数の合計を求める

#4

投稿記事 by 高校生 » 9年前

返信遅れました。
無事正常に動作しましたありがとうございました。

naohiro19
記事: 256
登録日時: 15年前
住所: 愛知県

Re: 再帰関数を用いて奇数の合計を求める

#5

投稿記事 by naohiro19 » 9年前

if( n % 2 == 1) で奇数
if( n % 2 == 0) で偶数
で求めることができます。

閉鎖

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