5.递归函数
(1)概念
有些问题本身比较复杂,但是可以通过拆分得到几个小问题,只要把小问题解决就等于把原始问题解决了。如果解决这些小问题的方法和原始问题一致,只是规模所缩小,这种问题就可以用递归来解决。
1+…+n = (1+…+n-1)+n
在C语言中药解决递归问题可以使用递归函数
自己调用自己的函数叫递归函数
(2)递归函数的编写方法
1)首先在函数中用语句描述问题的拆分方式(使用递归)
2)在函数开头写一个分支用于描述不可拆分的情况(不能使用递归),该分支保证让函数结束
6.变参函数
1.概念
参数不固定的函数叫变参函数,比如printf函数就是变参函数。
在声明和定义函数实在形参列表写上…表示该函数是一个变参函数,…要写到形参列表最后。
2.获取变参函数的参数
使用C语言提供的语法(宏)去获取变参函数,使用这些语法需要包含stdarg.h头文件
va_list --------- 类型,用于指向变参参数
va_start(va_list变量,变参函数之前的变量) ---------- 获取变量之后的变参
va_arg(va_list变量,参数类型) --------------- 根据类型获取变参列表中的参数
va_end(va_list变量) ----------- 变参处理结束
2.编写一个函数,计算指数 x^y,x是任意浮点数,y是任意整数。
使用递归和循环分别实现
3.编写函数求斐波拉契数列的第n位的值,斐波拉契数列的后一项是前两项之和
1,1,2,3,5,8,13,21,34,…