- 数据结构与算法
- DSA - 主页
- DSA - 概述
- DSA - 环境设置
- 数据结构
- DSA - 数据结构基础知识
- DSA - 数据结构和类型
- DSA - 数组数据结构
- 链表
- DSA - 链表基础知识
- DSA - 双向链表
- DSA - 循环链表
- 堆栈和队列
- DSA - 堆栈
- DSA - 表达式解析
- DSA-队列
- 图数据结构
- DSA - 图数据结构
- DSA-深度优先遍历
- DSA-广度优先遍历
- DSA——生成树
- 树数据结构
- DSA - 树数据结构
- DSA - 树遍历
- DSA - 二叉搜索树
- DSA - AVL 树
- DSA - 红黑树
- DSA - B 树
- DSA - B+ 树
- DSA - 八字树
- DSA - 尝试
- DSA-堆
- 递归
- DSA - 递归基础知识
- DSA - 河内塔
- DSA - 斐波那契数列
- DSA 有用资源
- DSA - 问题与解答
- DSA - 快速指南
- DSA - 有用的资源
- DSA - 讨论
数据结构与算法斐波那契数列
斐波那契数列通过添加两个先前的数字来生成后续的数字。斐波那契数列从两个数字开始 - F 0和 F 1。F 0和F 1的初始值可以分别取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的斐波那契显示为 -
斐波那契迭代算法
首先,我们尝试起草斐波那契数列的迭代算法。
Procedure Fibonacci(n) declare f0, f1, fib, loop set f0 to 0 set f1 to 1 <b>display f0, f1</b> for loop ← 1 to n fib ← f0 + f1 f0 ← f1 f1 ← fib <b>display fib</b> end for end procedure
斐波那契递归算法
让我们学习如何创建斐波那契数列的递归算法。递归的基本标准。
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 ← f0 + f1 f0 ← f1 f1 ← fib display fib end for END
例子
#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
// C++ Code for Fibonacci series #include <iostream> 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; std::cout << "Factorial of " << n << ": " << factorial(n) << std::endl; std::cout << "Fibbonacci of " << n << ": "; for(i = 0;i<n;i++) { std::cout << fibbonacci(i) << " "; } }
输出
Factorial of 5: 120 Fibbonacci of 5: 0 1 1 2 3
// Java Code for Fibonacci series public class Fibonacci { public static int factorial(int n) { // base case if (n == 0) { return 1; } else { return n * factorial(n - 1); } } public static int fibonacci(int n) { if (n == 0) { return 0; } else if (n == 1) { return 1; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } public static void main(String[] args) { int n = 5; int i; System.out.println("Factorial of " + n + ": " + factorial(n)); System.out.print("Fibonacci of " + n + ": "); for (i = 0; i < n; i++) { System.out.print(fibonacci(i) + " "); } }
输出
Factorial of 5: 120 Fibonacci of 5: 0 1 1 2 3
#Python code for fibonacci Series def factorial(n): # base case if n == 0: return 1 else: return n * factorial(n-1) def fibonacci(n): if n == 0: return 0 elif n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2) if __name__ == "__main__": n = 5 print("Factorial of", n, ":", factorial(n)) print("Fibonacci of", n, ": ") for i in range(n): print(fibonacci(i))
输出
Factorial of 5 : 120 Fibonacci of 5 : 0 1 1 2 3