c语言函数定义 调用ppt,C语言知识学习函数递归调用.ppt

c8da8f5a7cda2d62dda9e5a200b168b9.gifC语言知识学习函数递归调用.ppt

第6章 函 数,函数的递归调用,函数的递归调用,在调用一个函数的过程中,出现直接或间接地调用该函数本身,称为函数的递归调用。,int f int x int z; ifx0 return 1; ifx0 zf x-1; else ifx0 zf x1; return 2*z; ,例1函数的递归调用,include void recurint; int main void recur1; return 0; void recurint n //递归函数 printf第d级调用n, n; //1 if n 4 recurn1; //递归 printf第d级返回n, n; //2 ,输出结果 第1级调用 第2级调用 第3级调用 第4级调用 第4级返回 第3级返回 第2级返回 第1级返回,,,解析 从结果可以看出,1和2相当于循环体,当符合测试条件(即n4)时,1部分循环;当测试条件为false时,2部分循环。 在递归函数中,位于递归调用之前的语句(即1部分),按被调函数(即recur)的顺序执行;位于递归调用之后的语句(即2部分),按被调函数相反的顺序执行。 每级函数调用都有自己的变量,递归调用就相当于又从头开始执行函数的代码。 每次函数调用都会返回一次,并且按顺序逐级返回递归。,例2函数的递归调用,include int funint n //定义函数 ifn0||n1 n1; else nn*funn-1; //递归调用函数 return n; int main int i,j; printf请输入一个数字n; scanfd, ,,,例3函数的递归调用,有3个人坐在一起,问第3个人多少岁他说比第2个人大2岁。问第2个人多少岁他说比第1个人大2岁。最后问第1个人,他说是10岁。请问第3个人多大 分析 age3age22; age2age12; age110; 归纳 n1 agen10 n1 agenagen-12,程序如下 include int ageint n int c; if n 1 c 10; else if n 1 c agen - 1 2; return c; int mainvoid printf“d”, age3; return 0; ,程序执行过程如下 int mainvoid printf“d”, age3; int age3 int c; c age2 2; return c; int age2 int c; c age1 2; return c; ,int age1 int c; c 10; return c; ,例4函数的递归调用,课堂习题,include void func1int i;void func2int i;char st hello,friend; void func1int i printfc, sti; if i 3 i 2; func2i; ,void func2int i printfc, sti; if i 3 i 2; func1i; int mainvoid int i 0; func1i; return 0; ,A helloB helC hloD hlm,1下列程序执行后的输出结果是( ),2有如下程序 include int funcint a, int b return ab; int mainvoid int x 2, y 5, z 8, r ; r func funcx, y, z; printf“dn”, r;return 0; 该程序的输出的结果是( )。 A 12B 13C 14D 15,3下面程序的输出结果是( )。 include int fint a, int b; int mainvoid int i 2, p; p f i, i 1 ; printf “d”, p; return 0; int f int a, int b int c; if a b c 1; else if a b c 0; else c -1; return c; A 1B 0C 1D 2,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值