2013年1月12日

递归与尾递归

摘要: 递归函数具有结构清晰,调用容易的优点。但是递归的过程中,递归函数将会被反复的调用,因此会在栈中占用非常大的空间来保存函数的上下文信息,若是递归调用的层次非常深的话,对栈的存储资源利用是十分低效的。为了克服上述的缺点,现代编译器,提出了尾递归的概念 那么什么是尾递归呢?尾递归是指当编译器检测到一个函数调用是尾递归的时候,它就覆盖当前的活跃记录而不是在栈中创建一个新的。因此只要我们能把递归调用都化成尾递归的形式,对栈空间的使用量将会大大减少,程序的实际运行效率也会大大提高。 形式上说,当递归调用是整个函数体最后执行的语句并且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。 下面给出... 阅读全文

posted @ 2013-01-12 10:18 No.47 阅读(204) 评论(0) 推荐(0)

导航