斐波那契数列

来源:互联网 发布:人的极限寿命知乎 编辑:程序博客网 时间:2024/06/05 17:14

Fibonacci数列定义:

矩阵写法:


矩阵递推写法:


下面介绍求解Fibonacci数列的3种方法:迭代法、递归法、矩阵法

//-------------------------------------------------//--函数名:Fibonacci_iterate//--功能描述:迭代对斐波那契数列求和//--形参描述:f1:初值1   f2:初值2  sequence_length:序列长度 //--返回值:  //-------------------------------------------------FiboData Fibonacci_iterate(FiboData f1,FiboData f2,int sequence_length)//迭代法{if(sequence_length<=MaxFiboNum){if(sequence_length == 1){return f1;}else if (sequence_length == 2){return f2;}else{int Icount = 0;FiboData Fibo_new = 0;FiboData Fibo_prev1 = f2;FiboData Fibo_prev2 = f1;for(Icount = 1;Icount <= sequence_length-2;Icount++){Fibo_new = Fibo_prev1 + Fibo_prev2;Fibo_prev2 = Fibo_prev1;Fibo_prev1 = Fibo_new;}return Fibo_new;}}else{printf("Error! The max index of Fibonacci defined 'int' is %d.\n",MaxFiboNum);}}
//--函数名:Fibonacci_recurs//--功能描述:递归法对斐波那契数列求和//--形参描述:f1:初值1   f2:初值2  sequence_length:序列长度 //--返回值:  //-------------------------------------------------FiboData Fibonacci_recurs(FiboData f1,FiboData f2,int sequence_length)//递归法{FiboData Fibo_new = 0;if(sequence_length<=MaxFiboNum){if(sequence_length == 1){return f1;}else if (sequence_length == 2){return f2;}else{Fibo_new = Fibonacci_recurs(f1,f2,sequence_length-1) + Fibonacci_recurs(f1,f2,sequence_length-2);return Fibo_new;}}else{printf("Error! The max number of Fibonacci defined 'int' is %d.\n",MaxFiboNum);}}
//-------------------------------------------------//--函数名:Fibonacci_matrix//--功能描述:矩阵法对斐波那契数列求和//--形参描述:f1:初值1   f2:初值2  sequence_length:序列长度 //--返回值:  //-------------------------------------------------FiboData Fibonacci_matrix(FiboData f1,FiboData f2,int sequence_length)//{ if(sequence_length<=MaxFiboNum){if(sequence_length == 1){return f1;}else if (sequence_length == 2){return f2;}else{int Icount = 0;FiboData Fibo_new=0;FiboData TempMatrix11 = 0;//矩阵元素FiboData TempMatrix12 = 0;//矩阵元素FiboData TempMatrix21 = 0;//矩阵元素FiboData TempMatrix22 = 0;//矩阵元素FiboData FibonacciMatrix11 = 1;FiboData FibonacciMatrix12 = 1;FiboData FibonacciMatrix21 = 1;FiboData FibonacciMatrix22 = 0;for(Icount = 1;Icount<sequence_length-2;Icount++){TempMatrix11 = FibonacciMatrix11 + FibonacciMatrix12;TempMatrix12 = FibonacciMatrix11 ;TempMatrix21 = FibonacciMatrix21 + FibonacciMatrix22;TempMatrix22 = FibonacciMatrix21 ;FibonacciMatrix11 = TempMatrix11 ;FibonacciMatrix12 = TempMatrix12 ;FibonacciMatrix21 = TempMatrix21 ;FibonacciMatrix22 = TempMatrix22 ;}Fibo_new = FibonacciMatrix11*f2 + FibonacciMatrix21*f1;return Fibo_new;}}else{printf("Error! The max number of Fibonacci defined 'int' is %d.\n",MaxFiboNum);}}

0 0
原创粉丝点击