上級 › Segmentation fault(再帰関数の終了条件忘れによるスタックオーバーフロー) › パターン2
Segmentation fault(再帰関数の終了条件忘れによるスタックオーバーフロー)
再帰関数に正しい終了条件(ベースケース)が無いと、関数呼び出しのたびにスタック領域が積み上がり続け、上限に達した時点でクラッシュします。
1 #include <stdio.h> 2 3 int sumTo(int n) { 4 if (________) { ^ 5 return 0; 6 } 7 return n + sumTo(n - 1); 8 } 9 10 int main(void) { 11 printf("%d\n", sumTo(5)); 12 return 0; 13 }
Segmentation fault
空欄を埋めてコンパイル・実行を通す
ベースケースの条件を書き忘れる(あるいは常に偽になる条件を書いてしまう)と、再帰は自然には止まりません。
次の問題