13/04/27 23:06:11.23
>>180
printfとかしてりゃ出力内容は変わるわな
そういう事してなけりゃ何も変わらない
再帰関数で戻り値の型がvoidなのは
そういう副作用を伴う場合しか意味が無い
階乗を求める関数を考えてみる
unsigned int factorial(unsigned int n)
{
if (n <= 1) {
return 1;
} else {
unsigned int tmp = factorial(n - 1);
return n * tmp;
}
}
factorial の再帰の前後で何か状態が変わるかと言うと、全く変わらない
状態は変わらないけど、新たに戻り値が得られる
戻り値は関数への引数が変われば異なる値になる
この関数は数式の
0! = 1
1! = 1
n! = n * (n-1)!
を素直にそのまま関数にしたもの
数式が理解できるならCのコードも理解できなければおかしい事に気付くこと