#include #if 1 /* 1にするとfor-loop版,0にすると再帰版,どちらでも結果は同じ */ int fact(int n) /* for-loop版 */ { int f; for(f =1; n>0; n=n-1) f = f * n; return f; } #else int fact(int n) /* 再帰を使った版 */ { if (n==0) { return 1; } else { return n*fact(n-1); } } #endif main() { int n; printf("整数を入力してください:"); scanf("%d", &n); if(n<0){ printf("入力した整数が負です:\n"); }else{ printf("%d の階乗= %d \n",n,fact(n)); } }