三种方式实现阶乘函数
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; }
相关文章推荐
- 总结用三种方式实现类似MSN的消息弹出框
- 对于实现Java平台的三种方式的详细解析
- 三种 bottom half的实现方式 softirqs, tasklets, work queue 及之间的比较
- .NET中的三种接口实现方式
- 实现JavaScript中继承的三种方式
- 实现 Java 平台的三种方式
- 验证码三种实现方式
- C#中实现程序开机自启动 三种方式
- Struts2树状菜单三种实现方式
- .NET中的三种接口实现方式
- 自定义表单的三种方式实现
- Spring依赖注入(DI)的三种实现方式
- linux中RamDisk的三种实现方式
- Ubuntu Linux下实现QQ的三种方式
- C#实现启用、禁用本地网络的三种方式
- 在gridview或datagrid中添加汇总行的三种实现方式
- Ubuntu Linux下实现QQ的三种方式
- 实现JavaScript中继承的三种方式
- java Swing:实现事件监听的三种方式