Recursion 递归与非递归

Recursion 递归与非递归,recursion,non-recursive,Recursion,Non Recursive,可能重复: 递归函数和非递归函数的区别是什么?确切地说是斐波那契 我在寻找与时间和内存有关的答案。递归函数是用编程语言实现的过程或子例程,其实现引用自身 非递归函数是用编程语言实现的过程或子例程,其实现不引用自身 下面是递归和非递归斐波那契级数的链接:-“递归”只是指函数调用自身。这可能是故意的,也可能不是故意的(非故意的递归导致了大量的崩溃) 有意递归通常是一种有用的编程范例,其中函数执行一个操作的一部分,然后调用自身来执行其余部分,但需要一定程度的理解/经验/技能来“了解它” 基本上,递归

可能重复:

递归函数和非递归函数的区别是什么?确切地说是斐波那契


我在寻找与时间和内存有关的答案。

递归函数是用编程语言实现的过程或子例程,其实现引用自身

非递归函数是用编程语言实现的过程或子例程,其实现不引用自身

下面是递归和非递归斐波那契级数的链接:-

“递归”只是指函数调用自身。这可能是故意的,也可能不是故意的(非故意的递归导致了大量的崩溃)

有意递归通常是一种有用的编程范例,其中函数执行一个操作的一部分,然后调用自身来执行其余部分,但需要一定程度的理解/经验/技能来“了解它”

基本上,递归可以用来替换“迭代”(循环)和相应的数组分配(使用函数体的局部变量)。但并不是每一个使用迭代或数组的函数都能有效地转换为其递归等价函数

如果这个问题适合递归,人们通常可以编写一个递归版本,该版本的执行效率与非递归版本相当。。。与语言/编译器中的循环和数组索引相比,调用机制的效率可能稍好或稍差。就存储而言,递归很少更有效,但它受益于不必为手头的特定问题预先分配(以及预先知道分配的大小)

大多数情况下,递归更好(实际上更好),因为它使实现更简单,更不容易出错,而且错误是计算中迄今为止最大的成本。(当然,如果做得不好,你也会花很多时间。)


当递归是好的,它是非常好的。当递归不好的时候,它是非常不好的。

递归函数调用递归函数。@raina77ow,好的,但这只是因为递归函数直接或间接地调用它们自己。你要问的是递归和迭代之间的区别……这已经回答了很多次了,好的,现在告诉我:这些-
函数a(x){返回x?b(x-1):0;}函数b(x){返回x?a(x-1):0;}
-递归吗?我不同意。我可以开发一个用给定编程语言编写的函数,它调用一个用不同编程语言编写的函数,两种实现都引用“其他”函数。结果:递归引用,在每个函数的实现中不可见。这是一种间接递归。@raina77ow,没错,你甚至不必使用不同的语言。递归的。间接的。那么时间不受影响?记忆呢?两者都会受到影响,只是影响是不可预测的。在简单情况下,递归的内存要高得多,因为每次调用都有堆栈帧开销。但对于复杂的情况,不需要“以防万一”地分配大型阵列。