C语言中return要返回到哪里? 10
下列函数#include<stdio.h>wetl(intn){if(n!=0){wrtl(n-1);printf("%d\n",n);}return;}是一个递归函数,...
下列函数 #include<stdio.h> wetl(int n) { if(n!=0) {wrtl(n-1);printf("%d\n",n); } return ; } 是一个递归函数,但是return是怎么返回的。
展开
3个回答
展开全部
递归就是一个函数调用该函数本身。。。。
但必须要有终止条件。。。。。
举上楼的例子:
wetl(int n)
{
if(n!=0) return wetl(n-1);
else
return n;
}
假若n=2;
n!=0
执行 wetl(n-1),也就是welt(1);//要清楚此时还未跳出wetl(2){。。。。。}这个函数,它处于等待之中;
1!=0;
执行 wetl(n-1),也就是welt(0);//要清楚此时还未跳出wetl(1){。。。。。}这个函数,它处于等待之中;
0=0;则执行return n;
此时要返回上一层 去完成welt(1);
完成welt(1);后返回上层 去完成welt(2);
完成welt(2);后返回上层 去完成welt(3);
此时回到了初始状态,结束
好好想想假若一个函数A里有两个其它函数B C,如果仅执行了B函数,那么A函数就算执行完了吗???还有B都未执行完可以直接跳到C函数吗???所以必须去执行完B函数,等B完成后,跳出B函数去完成C函数,A函数才算完成。
递归就是把上面的B函数换成A函数,即A函数里有两个函数A C,然后去执行
但必须要有终止条件。。。。。
举上楼的例子:
wetl(int n)
{
if(n!=0) return wetl(n-1);
else
return n;
}
假若n=2;
n!=0
执行 wetl(n-1),也就是welt(1);//要清楚此时还未跳出wetl(2){。。。。。}这个函数,它处于等待之中;
1!=0;
执行 wetl(n-1),也就是welt(0);//要清楚此时还未跳出wetl(1){。。。。。}这个函数,它处于等待之中;
0=0;则执行return n;
此时要返回上一层 去完成welt(1);
完成welt(1);后返回上层 去完成welt(2);
完成welt(2);后返回上层 去完成welt(3);
此时回到了初始状态,结束
好好想想假若一个函数A里有两个其它函数B C,如果仅执行了B函数,那么A函数就算执行完了吗???还有B都未执行完可以直接跳到C函数吗???所以必须去执行完B函数,等B完成后,跳出B函数去完成C函数,A函数才算完成。
递归就是把上面的B函数换成A函数,即A函数里有两个函数A C,然后去执行
展开全部
这指的是返回上一级,比如一个递归程序,从第三层返回到第二层;又比如一个普通的子程序,那就返回到主程序中去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个递归写的有问题。
wetl(int n)
{
if(n!=0) return wetl(n-1);
else
return n;
}
应该这样写的
wetl(int n)
{
if(n!=0) return wetl(n-1);
else
return n;
}
应该这样写的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询