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