第五周
本周主学习了递归与数组
总结如下:
1.斐波那契数列第n项的三种求法
- 普通替换值法
分析:对于n >2
需要三个变量fab1,fab2,fab3,中间变量t;
fab1与fab2赋值为1;
循环(从4到n,因为fab1,fab2,fab3已知)
每次循环依次fab1=fab2,t=fab3,fab3=fab3+fab2,fab2=t;
得到第n项值;
- 递归
分析 : 递归需要末项,末-1项,初始项的关系
fab(n)=fab(n-1)+fab(n-2);
fab(1)=fab(2)=1;
大致代码如下:
int fab(int n){
if(n==1||n==2)
{return 1;}
else{
return fab(n-1)+fab(n-2);}
}
- 数组
分析:数组可以保存某项的值,但需要进行计算
可以使用循环计算出很大的项
n只要在其中就可以直接读取
但占据内存大
也可以使用fab[0],fab[1],fab[2] 替换第一种解法中的fab1,fab2,fab3达成一样的效果
2.关于数组的一些小点
- 定义项数为n的数组从0开始计数到n-1
- 使用static定义数组时可以省略数组的值,,且这些值=0
- 定义字符数组时须留一位作为结束'\0'
- 利用数组保存字符串可以直接用%s输出