Ada*_*rya 1 c recursion function
我很难找到递归的工作原理.一些教科书说"递归就是一个函数一次又一次地调用自己,直到满足一些基本条件".
有些书说"递归就是一个函数一次又一次地调用另一个函数,直到满足一些基本条件 ".
这是真的吗?如果两者都是真的,我们可以将下面给出的例子视为递归吗?如果否,那么在性能方面哪个更好,
下面的代码或递归?
def Function1()
{
/* do something */
}
def Function2()
{
for(i=0; i<=10; i++)
{
call Function1()
}
}
Run Code Online (Sandbox Code Playgroud)
正因为如此,该代码显示了反复调用Function1(),如果身体内Function1()有一个呼叫Function2(),那么这将是一个间接的递归-一个函数调用第二函数,然后再次调用第一.
通常,递归函数直接或间接地调用自身.在直接递归函数中,foo()对自身进行另一次调用.在间接递归中,函数foo()调用函数moo(),函数又调用函数foo(),直到达到基本情况.(然后,最终结果以与初始递归函数调用完全相反的顺序累加.)
现在,回答你的问题:
这段代码可以称为递归.如果没有,哪个更有优势,给出下面的代码或递归?
没有.迭代缺少多个激活记录(或堆栈帧),这使它成为更好的选择.