谁能帮我分别举一个例子,是关于函数的嵌套调用和递归调用的(要每一步都详细解说一下,非常感谢!}

我对C函数完全搞不懂。。小弟在这谢谢各位老师了。。。。。... 我对C函数完全搞不懂。。小弟在这谢谢各位老师了。。。。。 展开
 我来答
中北玉龙客
2010-07-28 · TA获得超过1.2万个赞
知道小有建树答主
回答量:1881
采纳率:0%
帮助的人:891万
展开全部
7.5.1 函数嵌套调用
函数嵌套调用:在被调函数中再调用其它函数称函数嵌套调用。
◆ C语言不能嵌套定义函数。
例如:在下列调用f1函数中调用f2函数。
float f1(int a, int b)

{



f2(a+b,a-b);



}

int f2(int x, int y)

{



}

调用过程如图7.2所示。

【例7.10】求1k+2k+3k+…+nk的值,假设k为4,n为6。

#include "stdio.h"

void main( )

{

int sum, n=6, k=4;

sum=add(k, n);

printf("输出结果为:%d",sum );

}

add(int a,int b) /*该函数功能:进行累加*/

{

int i, s=0;

for(i=1; i<=b; i++)

s=s+powers(i,a);

return(s);

}

powers(int m, int n) /*该函数功能:进行累乘*/

{

int j, p=1;

for (j=1; j<=n; j++)

p=p*m;

return(p);

}

运行结果为:

2275

7.5.2 函数递归调用
递归调用:在调用一个函数的过程中直接或间接地调用该函数本身,称为函数的递归调用。

在编写递归调用程序时注意:

(1)递归程序算法:即如何实现其递归;

(2)递归调用的结束条件:避免无止境递归调用造成死循环。所以递归调用应为条件递归调用:

if (条件) 递归调用

else ……

【例7.11】用递归算法编程求n!阶乘的程序。

从数学可知:n!=1*2*3* … *n,可得:

递归调用的结束条件:

if( (n==0)|| (n==1)) return(1);

else return(n*fac(n-1)); /* fac(n-1)求(n-1)!函数*/

程序如下:

int fac(int n)

{

if (n<0) printf("n<0,输入数据错误!");

else if( (n==0)|| (n==1)) return(1);

else return(n*fac(n-1));

}

void main( )

{

int n, y;

printf("请输入一个整数:");

scanf("%d",&n);

y=fac(n);

printf("%d!=%d",n, y);

}

运行结果为:

请输入一个整数:5↙

5!=120

【例7.12】调用一个递归函数,将一个整数的低位变成高位,高位变成低位组成另一个整数,例如输入1234得到另一个整数4321。

#include "stdio.h"

int fun(int n, int m)

{

if (n==0) return m;

else return fun(n/10, m*10+n%10);

}

void main( )

{

printf("%d\n",fun(1234, 0));

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hight1234
2010-07-30 · TA获得超过161个赞
知道答主
回答量:277
采纳率:0%
帮助的人:178万
展开全部
利用递归将字符串倒置
void recur(char *c,int k){ //k为字符串长度
char tmp;
if(k>1){ //递归退出条件
recur(c+1,k-2);// 递归到字符串中间位置 然后再向外展开进行交换
tmp=c[0];
c[0]=c[k-1];
c[k-1]=tmp;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cbb67c9fb
2010-07-28 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:82.1万
展开全部
谭浩强的书上写的很详细,沉下心去读3遍。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjf30366
2010-07-28 · TA获得超过264个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:143万
展开全部
可以这样来理解,嵌套调用是a调用b,而递归是a调用a,即本身。
既然对c函数搞不懂,就先把c学好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式