• 33 函数递归调用


    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语言支持可变参数函数

        

  • 相关阅读:
    Scanner类
    16 String类
    15_面向对象_01
    14_面向对象_01_2 完整格式
    14_面向对象_01_1 成员变量 成员方法
    13_面向对象辅助看懂实例
    面向对象的基本概念
    Servlet_03 进阶随笔 两种域的运用调用方式
    Servlet_03 资源跳转 关键字
    Servlet_02 资源跳转
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/12349197.html
Copyright © 2020-2023  润新知