首页 > 学院 > 开发设计 > 正文

三种方式实现阶乘函数

2019-11-06 08:34:23
字体:
来源:转载
供稿:网友

三种方式实现阶乘函数

递归方式非递归方式尾递归方式

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


/* 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;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表