描述:
给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+...+n!)
输入:
输入有一行,包含一个正整数n(1 < n < 12)。
输出:
输出有一行:阶乘的和。
样例输入:
5
样例输出:
153
递归算法:
#include <stdio.h>
int jc(int n)
{
if(n==0) //if(n==0)则返回1
return 1;
return n*jc(n-1); //递归n(n-1)
}
int main()
{
int n,m,i,sum=0;
scanf("%d", &n);
m=n;
for(i=0;i<m;i++)
{
sum+=jc(n); //小于n的阶乘相加等于sum
n--;
}
printf("%d",sum);
return 0;
}
递归就是不断调用自身的过程,有关其他递归的实例参考Fibonacci数列以及菲波那契数列。
非递归算法:
#include <stdio.h>
int main()
{
int n, i;
scanf("%d", &n);
int fc=1, sum=0;
for (i=1; i<=n; i++){
fc *= i;
sum += fc;
}
printf("%d",sum);
return 0;
}