您的位置:首页 > 其它

三种方式实现阶乘函数

2017-03-01 22:02 197 查看

三种方式实现阶乘函数

递归方式

非递归方式

尾递归方式

递归的一个小练习,直接上代码,没什么技术含量,关于尾递归的话,是一种编译器优化的方式,原理本人也不懂,感兴趣可以自行搜索,总之就是尾递归要比递归节省好多空间,只需两个递归函数的空间即可。

/*
2.递归与分治
阶乘函数
*/
#include <stdio.h>
int factorial(int n)
{
if(n==0)    return 1;
else    return n*factorial(n-1);
}//递归
int factorial2(int n, int m)
{
if(n==0)    return m;
else
{
m *= n;
}
return factorial2(n-1,m);
}//尾递归
int factorial3(int n)
{
int i,result = 1;
for(i = n; i > 0; i--)
result *= i;
return result;
}//非递归
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", factorial(n));
printf("%d\n", factorial2(n, 1));
printf("%d\n", factorial3(n));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: