这段代码可以称为递归.如果没有,哪个更有优势,给出下面的代码或递归?

Ada*_*rya 1 c recursion function

  1. 我很难找到递归的工作原理.一些教科书说"递归就是一个函数一次又一次地调用自己,直到满足一些基本条件".

  2. 有些书说"递归就是一个函数一次又一次地调用另一个函数,直到满足一些基本条件 ".

  3. 这是真的吗?如果两者都是真的,我们可以将下面给出的例子视为递归吗?如果否,那么在性能方面哪个更好,

    下面的代码或递归?


    def Function1()
    {
        /* do something */
    }

    def Function2()
    {
        for(i=0; i<=10; i++)
        {
             call Function1()
        }
    }
Run Code Online (Sandbox Code Playgroud)

Zie*_*ezi 5

正因为如此,该代码显示了反复调用Function1(),如果身体内Function1()有一个呼叫Function2(),那么这将是一个间接的递归-一个函数调用第二函数,然后再次调用第一.

通常,递归函数直接或间接地调用自身.在直接递归函数中,foo()对自身进行另一次调用.在间接递归中,函数foo()调用函数moo(),函数又调用函数foo(),直到达到基本情况.(然后,最终结果以与初始递归函数调用完全相反的顺序累加.)

现在,回答你的问题:

这段代码可以称为递归.如果没有,哪个更有优势,给出下面的代码或递归?

没有.迭代缺少多个激活记录(或堆栈帧),这使它成为更好的选择.