递归入门(一) --- 阶乘问题

想搞ACM 或者算法 递归算法必须学懂,最近在网上看到有人介绍一本书《抽象程序设计C语言描述》感觉不错,我就看了一下,感觉收货挺多的,今天分享出来,

这是递归的入门题之一吧!


阶乘问题:

就是输入一个N, 求出N!是多少?


解题分析:

此题在这里只能用递归做,那么想法是1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 *。。。。。。等等

可以这么想,倒着想 n * (n-1)*( n-2) * .......................接下来继续转换

原式等于 n * (n-1)!

原式等于 n * (n - 1) *( n-2) !

以此类推。。。


代码:

#include <iostream>
#include <cstdio>
using namespace std;
int ans;
int n;
int factorial(int n)
{
if(n==1)
return 1;
return n*factorial(n-1);
}


int main()
{
scanf("%d",&n);
cout<<factorial(n)<<endl;
return 0;
}

你可能感兴趣的:(递归入门(一) --- 阶乘问题)