前提・実現したいこと
C言語でn個の中からr個の組み合わせの数を求めるnCrのプログラムを作っていて、コンパイルはできましたがエラーが出てしまします。
解決法を教えていただけると幸いです。階乗の計算は別の関数でする、という制約つきです。
エラーの意味も理解しているのですが、プログラムのどこを直せば良いのかわかりません。
発生している問題・エラーメッセージ
zsh: floating point exception ./a.out
該当のソースコード
C
1#include <stdio.h> 2 3long kaijo(int); 4 5int main(void){ 6 7 long int n, r,n_r, a; 8 printf("n→"); scanf("%ld", &n); 9 printf("r→"); scanf("%ld", &r); 10 11 n=kaijo(n); 12 r=kaijo(r); 13 n_r=kaijo(n-r); 14 15 a=n/(r*n_r); 16 printf("%ld", a); 17 return 0; 18} 19 20long kaijo(int k){ 21 if (k==0){ 22 return 1L; 23 }else{ 24 return k*kaijo(k-1); 25 } 26}
タイトルに【至急】は付けないことをお勧めします。以下のリンク先を参照。
https://qiita.com/doikoji/items/7cf9e659095816ab1131
至急と書くと自分の都合しか考えてない自分勝手な人と思われるから止めた方がいいです。
質問する前にググって調べてみましょう。少なくともエラーメッセージでググってください。Teratail にも似たような話の過去スレッドがあります。
https://teratail.com/questions/85212
回答4件
あなたの回答
tips
プレビュー