C言語の再帰関数を使って、nの階乗を求める方法は何ですか?
以下是使用C语言递归函数来计算n的阶乘的示例代码:
#include <stdio.h>
// 声明递归函数
unsigned long long factorial(int n);
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
// 调用递归函数求解阶乘
unsigned long long result = factorial(n);
printf("%d的阶乘为%llu\n", n, result);
return 0;
}
// 定义递归函数
unsigned long long factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
上記のコードでは、nの階乗を計算するために再帰関数factorialが使用されています。関数の定義では、最初に終了条件を判断し、つまりnが1以下の場合は1を返して階乗を終了します。そうでない場合は、再帰関数を続けてn-1を引数として呼び出し、その結果をnと乗算してnの階乗を取得します。
main 関数では、最初にユーザーが入力した正の整数nを読み取り、その後、再帰関数factorialを呼び出してnの階乗を解き、その結果を画面に出力します。