无涯教程-递归 - 斐波那契系列

55 阅读2分钟

斐波那契数列通过将两个先前的数字相加来生成后续的数字,斐波那契数列从两个数字开始- F0 & F1. 初始值可以分别设为0、1或1、1。

斐波那契数列满足以下条件-

Fn=Fn-1 + Fn-2

因此,斐波那契数列可以看起来像这样-

F 8 =0 1 1 2 3 5 8 13

或者,这-

F 8 =1 1 2 3 5 8 13 21

出于说明目的,F 8 的斐波那契显示为-

Fibonacci Animation

斐波那契迭代算法

首先,我们尝试为Fibonacci级数起草迭代算法。

Procedure Fibonacci(n)
   declare f0, f1, fib, loop 

set f0 to 0 set f1 to 1

display f0, f1

for loop 1 to n

  fib </span><span class="pun"></span><span class="pln"> f</span><sub><span class="pln">0</span></sub><span class="pln"> </span><span class="pun">+</span><span class="pln"> f</span><sub><span class="pln">1</span></sub><span class="pln">   
  f</span><sub><span class="pln">0</span></sub><span class="pln"> </span><span class="pun"></span><span class="pln"> f</span><sub><span class="pln">1</span></sub><span class="pln">
  f</span><sub><span class="pln">1</span></sub><span class="pln"> </span><span class="pun"></span><span class="pln"> fib

  display fib

end for

end procedure

C语言实现上述算法

#include <stdio.h>

int factorial(int n) {
   //base case
   if(n == 0) {
      return 1;
   } else {
      return n * factorial(n-1);
   }
}

int fibbonacci(int n) {
   if(n == 0) {
      return 0;
   } else if(n == 1) {
      return 1;
   } else {
      return (fibbonacci(n-1) + fibbonacci(n-2));
   }
}

int main() {
   int n = 5;
   int i;
	
   printf("Factorial of %d: %d\n" , n , factorial(n));
   printf("Fibbonacci of %d: " , n);
	
   for(i = 0;i < n;i++) {
      printf("%d ",fibbonacci(i));
   }
}
Factorial of 5: 120
Fibbonacci of 5: 0 1 1 2 3

斐波那契递归算法

让我们学习如何创建递归算法斐波那契数列。递归的基本标准。

START
Procedure Fibonacci(n)
   declare f0, f1, fib, loop 

set f0 to 0 set f1 to 1

display f0, f1

for loop 1 to n

  fib </span><span class="pun"></span><span class="pln"> f</span><sub><span class="pln">0</span></sub><span class="pln"> </span><span class="pun">+</span><span class="pln"> f</span><sub><span class="pln">1</span></sub><span class="pln">   
  f</span><sub><span class="pln">0</span></sub><span class="pln"> </span><span class="pun"></span><span class="pln"> f</span><sub><span class="pln">1</span></sub><span class="pln">
  f</span><sub><span class="pln">1</span></sub><span class="pln"> </span><span class="pun"></span><span class="pln"> fib

  display fib

end for

END

C语言实现的算法

#include <stdio.h>

int factorial(int n) { //base case if(n == 0) { return 1; } else { return n * factorial(n-1); } }

int fibbonacci(int n) { if(n == 0){ return 0; } else if(n == 1) { return 1; } else { return (fibbonacci(n-1) + fibbonacci(n-2)); } }

int main() { int n = 5; int i;

printf("Factorial of %d: %d\n" , n , factorial(n)); printf("Fibbonacci of %d: " , n);

for(i = 0;i<n;i++) { printf("%d ",fibbonacci(i));
} }

Factorial of 5: 120
Fibbonacci of 5: 0 1 1 2 3

参考链接

www.learnfk.com/data-struct…