递归函数能画程序框图么

递归函数能画程序框图么,第1张

不能的,因为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语言 请问这个递归函数程序怎样执行的。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10139652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存