再帰関数を学んでいます。Segmentation fault の理由
以下のコードは再帰関数を用いてmPnとmCnを計算し出力するプログラムです
Segmentation faultの箇所はコード4行目のn==m-nであることは分かっていますがなぜかが分かりません。どうすればプログラムを動かせますか?
#include <stdio.h>
int mpn(int m, int n){
if(n==m-n){
return 1;
}
return m*mpn(m-1, n);
}
int mcn(int n){
if(n==1){
return 1;
}
return n*mcn(n-1);
}
int main(){
int m, n, d;
printf("input m and n:");
scanf("%d %d", &m, &n);
d=mpn(m, n);
printf("%dP%d = %d\n", m, n, d);
d=d/mcn(n);
printf("%dC%d = %d\n", m, n, d);
return 0;
}