首页 > 其他 > 详细

33 函数递归调用

时间:2020-02-23 13:18:26      阅读:55      评论:0      收藏:0      [点我收藏+]

1,一个函数在函数体内又调用了本身,称为递归调用

2,

技术分享图片

  若传入4

  打印结果:n=2  n=3  n=4

  分析:

  技术分享图片

 

   若改为:

  技术分享图片

 

   打印结果为:

    n=2

3,①执行一个函数时,就创建一个新的受保护的独立空间(新函数栈)

  ②函数的局部变量是独立的,不会相互影响

  ③递归必须向退出递归的条件逼近,否则就是无限递归,死归了

  ④当一个函数执行完毕,或者遇到 return 就会返回,遵守谁调用就将结果返回谁。

4,练习1,斐波那契数

  请使用递归的方式,求出斐波那契数 1,1,2,3,5,8,13,,,,,

  给你一个整数,求出它的斐波那契数是多少

  技术分享图片

 

5,练习2:求函数值:

  已知 f (1) = 3 ,  f (n ) = 2 *  f (n -1 ) +1

  给你一个整数 n ,求出 f (n)

  技术分享图片

 

6,练习3,猴子吃桃问题

  有一堆猴子,猴子第一天吃了其中的一半,并再多吃了一个,一个每天猴子都吃其中的一半,当到第十天时,想再吃时(还没吃),发现只有一个桃子了。问题,最初共多少个桃子?

  分析:day10 = day9 * 1/2 + 1  = >  day9 =2 * (day10+1)

     day9 = day8 * 1/2 +1  =>  day8 = 2* (day9+1)

  技术分享图片

 

   技术分享图片

 

7,①函数的形参列表可以是多个

  ②C语言传递参数可以是值传递,也可以是指针传递

  ③函数的命名遵循标识符命名规范,首字母不能是数字,可以采用驼峰法或者下划线法,

 

 

   ④函数中的变量是局部的,函数外不生效

  ⑤基本数据类型默认是值传递的,即进行值拷贝,在函数内修改,不会影响到原来的值,如:

    技术分享图片

 

   ⑥如果希望函数内的变量能够改变函数外的变量,可以传入变量的地址 & ,函数内以指针的方式操作变量,从效果上看类似引用(即传递指针),如:

    技术分享图片

 

     技术分享图片

 

     形参是两个指针类型 int*

      执行机制分析:

     技术分享图片

  ⑦C语言不支持函数重载

   ⑧C语言支持可变参数函数

    

 

33 函数递归调用

原文:https://www.cnblogs.com/shanlu0000/p/12349197.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!