扫码关注官方订阅号
84669人学习
65727人学习
82984人学习
467778人学习
498837人学习
471966人学习
256484人学习
152542人学习
224170人学习
139536人学习
81804人学习
85022人学习
11944人学习
20001人学习
60816人学习
5487人学习
15007人学习
2150人学习
6980人学习
194925人学习
359900人学习
1142人学习
19058人学习
3206人学习
180550人学习
48569人学习
17603人学习
40936人学习
1049人学习
750人学习
32909人学习
递推 递归 迭代 三者间有什么区别?
走同样的路,发现不同的人生
简单来说,递推和迭代是类似的,是自己控制重小算到大。
fib = [0] * 100 fib[0] = 1 fib[1] = 1 for idx,_ in enumerate(fib): if idx > 1: fib[idx] = fib[idx -1] +fib[idx -2]
而递归是由程序控制,并且一般都有递归次数的限制,防止无限循环。
def fib(n): if n < 2: return 1 else: return fib(n-1) + fib(n-2)
递归是自顶向下逐步拓展需求,最后自下向顶运算。即由f(n)拓展到f(1),再由f(1)逐步算回f(n)迭代是直接自下向顶运算,由f(1)算到f(n)。递归是在函数内调用本身,迭代是循环求值。
分别用递归法和迭代法求斐波那契数列:
//使用递归的方法实现 long long fibonacci_recursive(int n) { if (n <= 0) return 0; if (n == 1) return 1; return fibonacci_recursive(n - 2) + fibonacci_recursive(n - 1); } //使用迭代的方法实现 long long fibonacci_iteration(int n) { int result[2] = { 0, 1 }; int i = 2; long long num = 0; if(n < 2) { return result[n]; } long long fib_minusone = 1; long long fib_minustwo = 0; for(;i <=n;i++) { num = fib_minusone + fib_minustwo; fib_minustwo = fib_minusone; fib_minusone = num; } return num; }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号
精品班
技术支持
技术咨询
学习群
会员优惠
返回顶部
简单来说,递推和迭代是类似的,是自己控制重小算到大。
而递归是由程序控制,并且一般都有递归次数的限制,防止无限循环。
递归是自顶向下逐步拓展需求,最后自下向顶运算。即由f(n)拓展到f(1),再由f(1)逐步算回f(n)
迭代是直接自下向顶运算,由f(1)算到f(n)。
递归是在函数内调用本身,迭代是循环求值。
分别用递归法和迭代法求斐波那契数列: