不能的,因为return语句没有对应的程序框图,函数调用也无法表示,程序框图是算法一种表现形式而已,表示函数时局限性很大,只要涉及函数嵌套的都不行。
如果不按照标准来,只是画成图,可以用两个流程图表示,例如f(n)=f(n-1)+1 n>1 ;n=1 f(n)=1;
两个流程图一模一样,不过a引用了b的返回值,b也引用了a的返回值。图就不上传了,自己画吧。
arrs[100000][100000];
a[100000];
f(i,zhi){
if(i==4){
arrs[]=a;
return;
}
a[i]=zhi;
f(i+1,zhi+3);
f(i+1,zhi+4);
}
f(0,0)
arrs就是结果,并且是排了序的。
递归调用:函数自己调用自己! 必须要有出口才行。在未到达出口之前,所有的值都作为参数来调用自身
举个例子吧:当前你家有你爸爸,你,还有你爷爷、:需求是列出你家三人的下一代分别是谁?
假设定义一个方法问:你爷爷有儿子吗? 有,输出你爸爸。此时你爸爸作为参数放到方法里,继续问:你爸爸有儿子吗? 有 输出你! 此时你作为参数放到方法中! 你有儿子吗? 估计目前没有! 那么你就是这个问题的出口!迭代到你就暂时结束了。如果以后你有了儿子那么你可以继续作为参数输入输入到方法中!
而且迭代很浪费系统的资源! 如果你家有20位左右还在世的祖先! 系统就很可能出错! 这是递归的思想,递归都是这样执行的但是效率很低! 希望你能够明白!
首先,这段程序将w的初始值设为3,这个楼主应该清楚,然后看这段代码
if ( w != 0) //递归结束条件
{
print (w-1);
for (i = 1; i <= w; ++i)
printf ("%d ", w);
printf ("\n");
}
这段代码首先判断w是否为0,很显然,w为3,所以执行
print (w-1);
这句,执行这句则返回到第二步void print (int w);
w-1变成2,没有输出;然后继续向下执行,又到
print (w-1);
这句,跟上边一样,又返回到第二步,这样w依次减到0,这个过程根本没涉及到for循环。这样程序运行到最后的分号,则返回刚才w=1的情况,然后执行
print (w-1);这句后边的程序,现在w=1,执行for循环,输出一个1,然后程序返回到w=2的那步,执行for循环,输出两个2,然后返回w=3那步,执行for循环,输出三个3;递归函数很特别的,所以楼主要好好学哦!!
以上就是关于递归函数能画程序框图么全部的内容,包括:递归函数能画程序框图么、按要求设计递归算法。只需写出伪代码或画流程图,不需语言实现,但算法必须完整清晰。、c语言 请问这个递归函数程序怎样执行的。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)