Python 官方文档:入门教程 => 点击学习
目录1.递归和迭代的区别2.代码1.递归和迭代的区别 当实体调用自身时,程序称为递归。当存在循环(或重复)时,程序称为迭代调用。示例:求一个数的阶乘的程序 时间复杂度比较
调用自身
时,程序称为递归
。循环(或重复)
时,程序称为迭代调用
。时间复杂度比较
查找递归的时间复杂度比迭代更难。
递归
:递归的时间复杂度可以通过根据先前的调用找到第 n 次递归调用的值来找到。因此,根据基本情况找到目标情况,并根据基本情况求解,可以让我们了解递归方程的时间复杂度。迭代
:迭代的时间复杂度可以通过找到循环内重复的循环数来找到。用法比较
开销
递归
:递归有函数重复调用的开销,即由于重复调用同一个函数
,代码的时间复杂度增加了很多倍
。迭代
:迭代不涉及任何此类开销。无限重复
递归
中的 Infinite Repetition 会导致 CPU crash,但在迭代中,当内存耗尽时它会停止。递归
:在Recursion中,由于指定的基本条件错误,可能会出现无限递归调用,在永远不会为假的情况下,不断调用函数,这可能会导致系统CPU崩溃。迭代
:由于迭代器赋值或递增错误或终止条件错误而导致的无限迭代将导致无限循环,这可能会或可能不会导致系统错误,但肯定会停止程序的进一步执行。递归 | 迭代 | |
---|---|---|
定义 | 函数调用自身。 | 重复执行的一组指令。 |
应用 | 对于功能。 | 对于循环。 |
终止 | 通过 base case,这里不会有函数调用。 | 当不再满足迭代器的终止条件时。 |
用法 | 当代码大小需要很小并且时间复杂度不是问题时使用。 | 当时间复杂度需要与扩展的代码大小进行平衡时使用 |
代码大小 | 更少的代码 | 更多的代码 |
时间复杂度 | 非常高(通常是指数)的时间复杂度。 | 时间复杂度相对较低(一般为多项式-对数)。 |
空间复杂度 | 空间复杂度高于迭代。 | 空间复杂度较低。 |
堆 | 这里的栈是用来存放函数调用时的局部变量的。 | 不使用堆栈。 |
速度 | 执行速度很慢,因为它有维护和更新堆栈的开销。 | 通常,它比递归更快,因为它不使用堆栈。 |
存储 | 与迭代相比,递归使用更多内存。 | 没有开销,因为迭代中没有函数调用。 |
高架 | 拥有重复函数调用的开销。 | 没有开销,因为迭代中没有函数调用。 |
无限重复 | 如果递归函数不满足终止条件或未定义或从未达到基本情况,则会导致堆栈溢出错误,并且系统有可能在无限递归中崩溃。 | 如果迭代语句的控制条件永远不为假或控制变量没有达到终止值,就会造成死循环。在无限循环中,它一次又一次地使用 CPU 周期。 |
public class Test {
// ----- 递归 -----
// 求给定数的阶乘的方法
static int factorialUsingRecursion(int n)
{
if (n == 0)
return 1;
// 递归呼叫
return n * factorialUsingRecursion(n - 1);
}
// -----迭代 -----
//求给定数的阶乘的方法
static int factorialUsingiteration(int n)
{
int res = 1, i;
// 迭代
for (i = 2; i <= n; i++)
res *= i;
return res;
}
public static void main(String[] args)
{
int num = 5;
System.out.println("Factorial of " + num
+ " using Recursion is: "
+ factorialUsingRecursion(5));
System.out.println("Factorial of " + num
+ " using Iteration is: "
+ factorialUsingIteration(5));
}
}
Factorial of 5 using Recursion is: 120
Factorial of 5 using Iteration is: 120
到此这篇关于Java递归和迭代区别详细介绍的文章就介绍到这了,更多相关Java递归和迭代区别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java递归和迭代区别详细介绍
本文链接: https://lsjlt.com/news/209441.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0