C言語 再帰関数 総和問題

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

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: C言語 再帰関数 総和問題

Re: C言語 再帰関数 総和問題

#8

by 田中 » 1年前

参照魚さん
なるほど。
その考え方なら確かにできたかもですね。。
自分の力に合わせて考えてくださりありがとうございます!

Re: C言語 再帰関数 総和問題

#7

by 田中 » 1年前

usaoさん
いろいろな考え方ありがとうございます。
どちらの考え方も自分でできるよう頑張ります!

Re: C言語 再帰関数 総和問題

#6

by 参照魚 » 1年前

>1つの値から0までならできました。
であれば、nの総和からmの総和を引くという方法もあります。
無駄も多いし、求められている解ではないですが、まあそんなのもあるということで。

Re: C言語 再帰関数 総和問題

#5

by usao » 1年前

区間を半分にしていくとか.

コード:

int sumof( int m, int n )
{
	if( m > n )return 0;
	if( m==n )return m;
	int h = (m+n)/2;
	return sumof(m,h) + sumof(h+1,n);
}

Re: C言語 再帰関数 総和問題

#4

by usao » 1年前

せっかくだから俺は
「mからnまでの和」を「m+n+(m+1からn-1までの和)」ということにするぜ!

コード:

int sumof( int m, int n )
{
	if( m > n )return 0;
	if( m==n )return m;
	return m + n + sumof(m+1,n-1);
}

Re: C言語 再帰関数 総和問題

#3

by 田中 » 1年前

みけCATさん
ありがとうございます。

Re: C言語 再帰関数 総和問題

#2

by みけCAT » 1年前

m<nのとき、「mからnまでの和」は、「m+(m+1からnまでの和)」と表すことができます。
m=nのとき、「mからnまでの和」はmです。
sumof関数の実装は、これをプログラムにすればいいでしょう。

さらに、sumof関数を呼び出すため、main関数のscanfの呼び出しとprintfの呼び出しの間に、

コード:

S = sumof(b, a);
を追加するといいでしょう。
(a, bとm, nの対応関係に注意)

C言語 再帰関数 総和問題

#1

by 田中 » 1年前

こんにちは。大学の課題で手詰まりになったので質問させていただきます。
問題内容は「整数aとbを入力して、aからbまでの和Sを求めるプログラム。ただし、整数mとn(
n≥m)を引数、mからnまでの和を戻り値とする再帰関数sumofを定義して利用すること。」です。
プログラムもうまくいきませんし、2つの値を使うのがうまくできません。(1つの値から0までならできました。)
よろしくお願いします。


コード:

#include<stdio.h>
int sumof(int n, int m)
{
	int S;
	if (n == 1 && m == 0)
		return 1;
	else
	 S = n + sumof(n - 1);
		return S;
}
int main(void) {
	int a;
	int b;
	int S;
	scanf("%d,%d", &a, &b);
	printf("%dか%dの総和は%dです。\n", a, b,S );
	return 0;
}

ページトップ