2019年05月30日(木) 
階乗の計算に再帰関数を使うとこのようになる。
judgmentにvalueが掛け合わされて関数の最後にjudgmentを戻り値にして完成である。
else ifでオーバーフローじゃあ無ければvalueが1になったところでjudgmentを戻り値にしている。
なので戻り値は最後の一回だけである。

int abs_func(int value) {
if(value <0) {
return value*-1;
} else {
return value;
}
}

int factorial_func(int value,int judgment, int UpperLimit) {
value = abs_func(value);//絶対値で階乗計算
if (judgment > (UpperLimit/value)) {
return -1;//オーバーフローでエラー
} else if (value ==1) {
return judgment;
}
judgment = judgment*value;
return factorial_func(--value,judgment,UpperLimit);
}

使い方は
int a = factorial_func(10,1,2147483647);
再帰関数により
1*10*9*8*7*6*5*4*3*2のような計算をする。

土曜日はcase文に挑戦したい。
明日は階乗を使って組み合わせと順列を作りたい。
日曜日はウォーキングである。
また今日も時間のオーバーである。
明日もよろしく。

閲覧数55 カテゴリ日記 コメント0 投稿日時2019/05/30 17:53
公開範囲外部公開
コメント(0)
  • 次項有コメントを送信
    閉じる
    名前 E-Mail
    URL:
■プロフィール
wakkiiさん
[一言]
東大場から発信
■この日はどんな日
書き込みはありませんでした。
■最近のファイル
■最近のコメント
■最近の書き込み