
No.3ベストアンサー
- 回答日時:
既存の関数を使わないならば、数学上の定義を基に実装しましょう
https://ja.wikipedia.org/wiki/%E9%9A%8E%E4%B9%97
階乗の定義は三つあり
定義A)
n! = \prod_{k=1}^{n} k = 1 * 2 * ... * (n-1) * n
0! = 1
定義B)
n! = n*(n-1)! ... if n > 0
0! = 1
定義C)
n! = (d/dx)^n * x^n
それぞれの定義を実装すると
// 定義A
int a = 1;
for (k=1; k<=n; k++) a *= k;
return a;
// 定義B
int f(int n) { return (n > 0)? n * f(n-1): 1; }
// 定義C
int* a = (int*)malloc(sizeof(int)*(n+1)); // n次方程式の係数配列
for (i=0; i<n; i++) a[i] = 0;
a[n] = 1; // x^n だけ係数 1
for (k=n; k>0; k--) { // n次方程式をn回微分
_ for (i=0; i<k; i++) { // 微分するごとに次数が減る
_ _ a[i] = a[i+1] * (i+1);
_ }
}
int x = a[0]; // 最後に残った0次の係数が解
free(a);
return x;
No.4
- 回答日時:
> C言語でファクト関数を使わずに階乗を計算する方法はありますか?
意味が分からんな。
そもそもC言語の仕様上、ファクト関数なんかねぇんとちゃうん?
っつーこたぁ、自作する、って事になるんだけど、ここで訊いてる事と噛み合わん。「無いもの」は「使えない」からだ。
あるいは、main関数内で他に作った関数を呼び出さずに階乗を計算したい、って事なの?
イマイチ意図が分からん質問だ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
プログラミング 素数か素数ではないか判断するプログラミングで、写真のようなプログラミングを打ったとき
C言語・C++・C#
-
いまc言語の標準ライブラリ文字列を勉強しているのですがいまいちわかりません。 strcmpとmemc
C言語・C++・C#
-
c言語の問題の説明、各所ごとに
C言語・C++・C#
-
-
4
関数ポインタの高速化のメリット
C言語・C++・C#
-
5
アセンブラ指令
C言語・C++・C#
-
6
いまc言語を独学で勉強しているのですがいまいちわかりません。 https://monozukuri-
C言語・C++・C#
-
7
C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、
C言語・C++・C#
-
8
大量のデータを読み込んで表示する速度を改善したい
C言語・C++・C#
-
9
Cのオブジェクトファイルの逆アセンブル
C言語・C++・C#
-
10
変数のスコープ
C言語・C++・C#
-
11
int16_t の _t は何?
C言語・C++・C#
-
12
Cのコンパイルでコメントアウトをそのままオブジェクトに保持したい
C言語・C++・C#
-
13
Cのdoubleの浮動小数点表示について
C言語・C++・C#
-
14
c言語
C言語・C++・C#
-
15
プログラミング 2つの整数を読み込んで、等しければ 「二つの値は同じです」と表示し、そうでなければ,
C言語・C++・C#
-
16
プログラミング 2つの整数を読み込んで、等しければ 「二つの値は同じです」と表示し、そうでなければ,
C言語・C++・C#
-
17
スタックフレームの消滅
C言語・C++・C#
-
18
C言語 1から20までの逆数の和を求めたいのですが、このようにプログラミングしたら値が負になってしま
C言語・C++・C#
-
19
C言語
C言語・C++・C#
-
20
C言語について。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DOSコマンドのループ内のTIMEコ...
-
VBAでの一時停止と再開の方法
-
画面を強制的に再描画させる方法
-
VBA for文が止まらない
-
GIFアニメをループさせたくない
-
範囲指定したセルを1つずつ飛...
-
vb.netです。2次元配列の要素を...
-
ループからの抜け出し方
-
vb.netからエクセル関数書き込み
-
エクセルの当番表を作っていま...
-
UWSCの終了の仕方
-
これの名称なんて~の?ダッフ...
-
【VBA】全て空白のセルの列の非...
-
Escキーを押すと、中断する時と...
-
エクセル関数で1〜12の数字がル...
-
DoEventsが必要な理由について
-
VBA Dir関数でファイルをループ...
-
WinAPI「MsgWaitForMultipleObj...
-
OSもどきを作りたいです(OSで...
-
プログラムはif文とforループが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
GIFアニメをループさせたくない
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
VBA for i=1 to lastrow
-
VBAで3秒だけ時間を止めたい
-
VBA Dir関数でファイルをループ...
-
Escキーを押すと、中断する時と...
-
DOSコマンドのループ内のTIMEコ...
-
vb.netからエクセル関数書き込み
-
乱数の桁数指定、または範囲指定。
-
CSVファイルの特定の行だけを読...
-
CASL2のアセンブリ(?)で質問...
-
多重ループの抜けだし方
-
範囲指定したセルを1つずつ飛...
-
pythonでファイルのコメント行...
-
エクセルの当番表を作っていま...
-
VB.NETで素因数分解のプログラ...
-
アクティブセルから、A列最終行...
おすすめ情報