函数递归与迭代
2023-09-14 09:09:01 时间
递归的缺陷:当运行较多次数的压栈过程会导致运算量过大。可是每个尾递归都能够写成循环(用一个不土的说法就是迭代)
fabonacii数列用迭代方式实现:
#include<stdio.h> int Fibonacii(int n) { int temp = 0; int a = 1;//记得给头两个数赋初值 int b = 1; if(n <= 2) return 1; while(n > 2) { temp = a + b; a = b; b = temp;//切忌写成 a = temp; b = a;这时的a已经改变!=1再赋给b已经没有意义 n--;//调整ab中存放的值向前移动 } return temp; } int main() { printf("%d\n",Fibonacii(6)); return 0; }
用迭代的方式实现阶乘:
#include<stdio.h> int fac(int n) { int ret = 1; while(n) { ret = ret * n; n--;// ret = 1*n,ret = n*(n-1) ....倒着往回乘 } return ret; } int main() { printf("%d\n",fac(3)); return 0; }
相关文章
- C++ 递归位置排列算法及其应用
- (十)java递归
- 递归与二分算法
- Java实现 LeetCode 662 二叉树最大宽度(递归)
- Java实现 LeetCode 653 两数之和 IV - 输入 BST(递归,找差值)
- ThinkPHP中:使用递归写node_merge()函数
- SAP Spartacus B2B Org Unit List节点展开的递归逻辑实现
- Python语言学习:Python语言学习之迭代/递归/OS输入输出/错误&异常处理的简介、案例应用之详细攻略
- 第七届蓝桥杯省赛JavaC组真题——详细答案对照(完整版·冰雹数递归解法·超简易)
- Java递归构建树形结构
- 994. 腐烂的橘子-非递归法
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )
- Python 求最大子集的递归实现
- 递归算法浅谈
- C++递归调用过多导致的栈溢出问题说明
- 【Leetcode刷题Python】高效求递归中函数的调用次数(动态规划方法,顺丰笔试题)
- 如何使用非递归算法实现二叉排序树的建立