階乗nを計算します!
Để làm được bài này, まず、式nをリコールする必要があります! 持っています. 定義によると、我々は階乗を持っています:
- 0! = 1
- N! = 1.2.3…N
Vậy là ta có công thức rồi. =私たちがnで参照式を見てみます 0 それは簡単です, > nの場合 0 thì nó là tích các số từ 1 nに. Vậy chúng ta có thể dùng ループ để tính dễ dàng 🙂
/* * Calculate n! */ #include <stdio.h> int main() { int i, n; int fact = 1; printf("Enter n = "); scanf("%d", &n); for(i = 1; i <= n; i++) { fact = fact * i; } printf("%d! = %d\n", n, fact); return 0; }
Khá dễ dàng. Tuy nhiên các bạn để ý một chút kẻo nhầm.
- Tại sao chúng ta lại gán giá trị ban đầu cho biến fact (Factorial) た 1 これではありません 0 hoặc số khác? Đơn giản vì nếu gán fact = 0 thì fact luôn là 0 の 0 数である掛け 0.
- なぜ私たちは、コードのケースを検討していないN = 0 ? 私たちのループ変数iにはから実行されるため 1 nに. もしN = 0 そしてもちろんループは、当社の実際の遺跡を一度実行しません。 1. だから、プログラムはまだ本当です
戻る少しNHEを考えます. あなたは、nは入力してみてください 20 何が起こるか見てより以上? あなたは、結果が間違っているか、その負の数を返して表示されます. 理由? あなたは人間による連続した階乗の性質のために、その結果は非常に速く増加しますのでご注意します. 5! = 120 しかし 6! = 720 ゴーン. したがって、私たちの事実は、データ型を作る急速に成長します (int型) 私たちは、含まれていることができません (あなたは見ることができます データ型の制限された範囲). だから我々は、データ型を変更する必要があります. 我々は我々が使用するデータの種類を推定しているの大きさに応じてNは、どのようなタイプであります. あなたは使用することができます 長いです または 長い長いです すべての階乗NHEに対して.
/* * Calculate n! */ #include <stdio.h> int main() { int i, n; long long fact = 1; printf("Enter n = "); scanf("%d", &n); for(i = 1; i <= n; i++) { fact = fact * i; } printf("%d! = %lld\n", n, fact); // lld for long long return 0; }
このあなたは計算することができた場合 20!. そして、次の結果:
Enter n = 20 20! = 2432902008176640000
20! いくつかの非常に大きいです.
別にループを使用してから、, 我々は階乗を計算するために自然と再帰関数を使用することができます. あなたは私たちの階乗の計算式に気づきました.
- 0! = 1
- N! = 1.2.3…N =約(-1).(N-2)…2.1 = N。(-1)!
手段N! = N。(-1)!. 階乗の定義では階乗を持っています, これは、再帰的に同等です – リコールその機能の主な機能. 次のように我々はプログラムを書くことができます:
/* * Calculate n! by recursive */ #include <stdio.h> long long fact(int n) { if(n == 0) return 1; return n * fact(n-1); } int main() { int n; printf("Enter n = "); scanf("%d", &n); printf("%d! = %lld\n", n, fact(n)); return 0; }
あなたはについてはこちらを参照することができます 機能や再帰関数を使用して.
muốn tính 200! その後、どのようにA?
あなたは、多くを学ぶNHE.
Eの文字列があまりにも学ぶことができますが、ハード. 先生とのアルゴリズムを適用するために使用される文字列.
あなたはここで見ることができます: https://cachhoc.net/2013/08/27/cc-tinh-toan-voi-so-lon/
この記事では、どのように先生をカウントしたいです
S = 1+1/2!+1/3!+…..+1/N!
1/2 分数であります
あなたは階乗を計算するためにループを使用する必要があります, 次いで、上記のように、次のループ・シーケンスを計算するために使用.
em muốn tính n! mod( 10 ^ 5) 調子はどう?