注意:本题是关于递归的熟悉程度,而不是实际应用。 对于非常大的数,本题不涉及大数运算。 直接使用int类型,因此使用较小的数字来测试程序。
#include
#include
/*递归,返回累乘结果*/
long fact(long arr[], int i)//数组,数组下标作为参数
{
if (i == 0) //递归出口
return 1;
else
return i * fact(arr, i - 1);//递归规律i-1
}
int main()
{
int n;
long arr[100];
printf("输入n的值(n>=1):");
scanf_s("%d", &n);
for (int i = 0; i < n; i++) //将1到n保存到数组中
arr[i] = i + 1;
printf("1到%d的累乘为:%d\n", n, fact(arr, n)); //打印累乘结果
system("pause"); //暂停,控制闪屏
return 0;
}
运行结果:
12 的阶乘
1 的阶乘
5 的阶乘
代码编译器:2017
好的