c加加递归返回上一个函数,会执行上一个函数没执行完的程序吗
1个回答
关注
展开全部
您好,亲我是生活导师小强,非常高兴能够为您解答。在C++中,当一个递归函数执行完毕后,会返回到调用该函数的上一个函数,并接着执行上一个函数剩余的程序。如果该上一个函数是递归函数的话,同样会执行上一个函数没执行完的程序。递归函数的返回顺序是由递归调用的顺序所决定的。当一个递归函数的递归调用都完成后,函数会逐级返回并执行上一个函数的程序,直至返回到调用该递归函数的程序为止。
咨询记录 · 回答于2023-03-16
c加加递归返回上一个函数,会执行上一个函数没执行完的程序吗
您好,亲我是生活导师小强,非常高兴能够为您解答。在C++中,当一个递归函数执行完毕后,会返回到调用该函数的上一个函数,并接着执行上一个函数剩余的程序。如果该上一个函数是递归函数的话,同样会执行上一个函数没执行完的程序。递归函数的返回顺序是由递归调用的顺序所决定的。当一个递归函数的递归调用都完成后,函数会逐级返回并执行上一个函数的程序,直至返回到调用该递归函数的程序为止。
如果递归函数,返回的时候没有return,他返回的值是不是上一个函数变量的值?
如果递归函数没有明确指定返回值(即没有使用return语句),那么它的返回值将是未定义的,具体取决于编译器的实现方式。在这种情况下,不应该依赖于未定义的行为,应该始终明确指定函数的返回值。如果递归函数在返回时没有使用return语句,它将执行完当前的函数调用,并将返回到调用该函数的上一个函数,继续执行上一个函数中未执行的代码。这并不意味着它返回的值是上一个函数变量的值,因为递归函数中未定义的行为可能导致不同的结果。
#includeusing namespace std;void hannoi(int n,char A,char B,char C){//n个盘子,起始位置,中转位置,终止位置 if(n==1){ cout<<"将圆盘"< n; cout<
第一条为什么输出a到c,不应该是a到b吗
亲,第一次打印的结果是循环到了n==1时候的结果哈,就是if(n==1){ cout<<"将圆盘"<
每一次循环都会先把循环的最终结果打印出来哈,亲
第一次循环n==3,然后判断再进入下一次循环n==2,然后判断再进入下一次循环n==1,打印出来日志哈,是这样的步骤
这边的值不是改变了吗
但是最终n==1的日志打印是不变的哟,一直循环到n==1时候才打印出来第一条日志的哈,就是cout<<"将圆盘"<