第五周

本周主学习了递归与数组

总结如下:

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输出