
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で質問しましょう!
似たような質問が見つかりました
- 数学 a乗根の中にb乗根がありそのまた中にc乗根があるような計算をと呼ぶのでしょうか 4 2022/06/24 09:00
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- 経済学 「政府支出乗算」の求め方を教えてください。 2 2022/11/20 19:52
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- 数学 統計学の問題について教えて下さい。高校数学 大学数学 5 2023/03/07 09:04
- C言語・C++・C# C言語で移動平均のプログラムを作りたいのですが、数値をファイルから取ってきて計算をするプログラムはど 1 2022/09/29 01:21
- 数学 冪乗の計算について教えてください 5 2023/04/22 22:36
- その他(プログラミング・Web制作) プログラミングって本来数学的な計算をする為のものではないのですか? 学校で配られたFortran90 11 2022/08/25 22:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
無限ループの防ぐ方法
-
基本情報午後問題について
-
透磁率
-
マクロでの繰り返し作業の書き...
-
Providence PEC-02 接続方法
-
WSH:任意のキーを押してDo Whi...
-
UWSCに制限時間を付けたいです
-
VBAでIE操作で IEが 固まっ...
-
うるう年判定のアルゴリズム
-
隣接交換法のアルゴリズムについて
-
イベントの発生を待つ
-
jQuery を使用した経過時間の表...
-
グラフィック描画中にボタンが...
-
入れ子になったfor文の初期化式...
-
VBAでのコピーのやり方
-
JAVAで...
-
Catalyst2924-XLのlogの内容
-
VB6 ListIndexのコピー
-
メビウスループの画像
-
sscanfより速い方法について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
流れ図(フローチャート)が分か...
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
VBAでの一時停止と再開の方法
-
乱数の桁数指定、または範囲指定。
-
VBA for i=1 to lastrow
-
VBAで3秒だけ時間を止めたい
-
vb.netです。2次元配列の要素を...
-
エクセルの当番表を作っていま...
-
vb.netからエクセル関数書き込み
-
DOSコマンドのループ内のTIMEコ...
-
「偶数・奇数の和」のフローチ...
-
GIFアニメをループさせたくない
-
Do whileでExitせず、ループの...
-
VB2010でCSVファイルの読み込み
-
【VBA】全て空白のセルの列の非...
-
アクティブセルから、A列最終行...
おすすめ情報