文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Tail Recursion

Tail Recursion

时间:2011-04-15  来源:glshader

Tail Recursion, 尾调用

第一次听说这个词是在<<Programming in Lua>>这本书中, 当时以为只有脚本语言这种神奇的东西才有这样功能. 

最近我回顾了一下<<算法导论>>, 发现书中提到可以用Tail Recursion来优化快速排序算法. 我用Microsoft的编译器做了一下测试, 发现果然很好用.

下面是不使用Tail Recursion的程序:

int Recursion(int x)
{
        if (x < 0)
                return x;
        else
                return x + Recursion(x - 1);
}

如果x的值很大, 那么call stack会很深.

下面是采用Tail Recursion的程序:

int TailRecursion(int x, int m)
{
//      __asm {int 3};    // release模式下的断点

        if (x < 0)
        {
                return m + x;
        }
        else
        {
                return TailRecursion(x - 1, m + x);
        }
}

在debug模式下, 两个函数的表现基本相同.

Release模式下(开启优化), 采用Tail Recursion的程序只占用调用栈的1层.

相关阅读 更多 +
排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载