codecamp

C++ 递归函数的栈图

在前面的章节中,我们使用了一个栈图来表示一个程序在函数调用时所处的状态。 同样的图形也能使得递归函数的解释变得更容易些。

每次函数被调用,它都会创建一个新的实例,包含着函数的局部变量和参数。

本图说明了函数countdown的一个栈图,调用时n的初始值为3;

enter image description here

图中有一个main函数的实例和四个countdown函数的实例,每个实例中的参数n的值都不同。栈底的countdown实例n取值为0。它没有进行递归调用,因此没有更多的countdown实例。

main函数的实例是空的,因为main函数没有任何参数或者局部变量。作为一个练习,请你为nLines画出一个栈图,参数n取值为4。

C++ 无穷递归
C++ 术语表
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }