1
13
不,递归(func_a calls func_a)或间接递归(func_a calls func_b calls func_a)之间的区别在于,使用计时器进行重复调用不会(去耦)增加堆栈,并且以前的状态会丢失。 |
2
3
不。函数是由外部源(计时器)调用的,因此它不是递归的。 |
3
3
它实际上取决于您对递归的定义,但我要说的是,这是在调度一个回调,以迭代方式调用,而不是递归。 递归涉及到将一个问题分解成更小的、类似的问题,直到达到一个基本情况,然后可能将这些问题的结果组合成一个解决方案。这里没有“较小”的问题;它只是安排相同的回调在一段时间后再次发生。 任何类型的硬定义和快速定义的问题都是递归可以通过迭代实现,反之亦然。 例如,这是递归的吗?
在支持尾部调用优化的语言中,两个函数之间递归调用可能会产生相同的效果(事实上,即使在没有尾部调用优化的语言中,您也可以这样做,但您将很快用完堆栈空间):
所以,问题真的变成了,如何区分某个东西是否是递归的?一个函数导致自己再次被调用这一事实是否会使其递归? |
4
2
所讨论的代码不是递归——因为代码是在外部调用的,而不是作为循环代码路径的一部分返回到同一方法调用。 维基百科有一个关于递归的伟大页面: Wikipedia: Recursion (computer science) |
5
2
我会称之为一个延迟的inifite循环。 当函数返回时,它不会返回到自身的前一个调用实例中,因此没有深度的“调用堆栈”,因为它通常是在递归中。 |
6
1
所以,这里f1(“move”)是在调用f1(“settimeout”),这反过来又会调用f1。隐马尔可夫模型。。如果F2是回调函数,则这是一个递归。但是,如果F2正在设置一些属性,比如“超时”。这不是递归。 |
7
1
从技术上讲可能是…
但我看不出你为什么要这么做。如果你 真正地 想变得愚蠢(并锁定浏览器线程):
|
8
0
是的。。但它可以称为间接递归。 直接递归的例子如下:
也有人说……调用自身的函数.. |
9
0
不,函数不调用自身。如果函数在移动体中调用自己,那么它将是递归的。 |
jkfe · 为什么println会在这段递归代码中执行? 2 年前 |
Jimmy · 这种算法怎么能按顺序遍历树“爬上”树呢? 2 年前 |
AvirukBasak · gcc中无return语句的尾部递归 2 年前 |
Dharmik Patel · 使用python递归完全可以整除 2 年前 |
W.tan · 一维最短距离递归算法 2 年前 |
ncarrawa · 将1添加到i(递归)时出现类型错误 2 年前 |
Eren · Python递归何时返回[duplicate] 2 年前 |