经典算法详解(1)斐波那契数列的n项

斐波那契数列是一个常识性的知识,它指的是这样的一个数列,它的第一项是1,第二项是1,后面每一项都是它前面两项的和,如:1,1,2,3,5,8,13,21,34,55,89,144,233……

说明:由于通过递推方式效率低,系统开销大,空间复杂度高,故不考虑。

 1 /*斐波那契数列:第一项和第二项为1,后面各项是其前面两项之和*/
 2 /*编写一个函数,输入整数n,求该项的值*/
 3
 4 #include<iostream>
 5
 6 using namespace std;
 7
 8 int fibonacci(int n) {
 9     if (n < 0){
10         return -1;
11     }
12     if ((n == 1 )||( n ==2)) {
13         return 1;
14     }
15     else {
16         int fib_1 = 1,fib_2=1,fib_3;
17         for (int i = 3; i <= n; i++) {
18             fib_3 = fib_1 + fib_2;
19             fib_1 = fib_2;
20             fib_2 = fib_3;
21         }
22         return fib_3;
23     }
24 }
25
26 int main(int argc, char *argv[]) {
27     cout << "please input n" << endl;
28     int n;
29     cin >> n;
30     cout << "The reslut: " << fibonacci(n) << endl;
31
32     getchar();
33     getchar();
34     return 0;
35 }

原文地址:https://www.cnblogs.com/ys99/p/9195507.html

时间: 2024-10-02 01:45:06

经典算法详解(1)斐波那契数列的n项的相关文章

黑马入学基础测试(三)求斐波那契数列第n项,n&lt;30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55

.获得用户的输入 计算      3打印就行了.   这里用到了java.util.Scanner   具体API  我就觉得不常用.解决问题就ok了.注意的是:他们按照流体的方式读取.而不是刻意反复读取 自己写的代码: package com.itheima; import java.util.Scanner; public class Test3 { /** * 3.求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55 * * @author

求斐波那契数列第n项,n&lt;30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55

public class Test4 { public static void main(String[] args) { int n; int fn; Scanner scanner=new Scanner(System.in); System.err.println("请输入30以内的整数:"); n=scanner.nextInt(); fn=peibo(n); System.out.println("斐波那契数列第"+n+"项为:"+fn

《BI那点儿事》Microsoft 时序算法——验证神奇的斐波那契数列

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368斐波那契数列的发明者,是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci),生于公元1170年,卒于1250年,籍贯是比萨.他被人称作“比萨的列昂纳多”.1202年,他撰写了<算盘全书>(Liber Abacci)一书.他是第一个研究了

算法题---k阶斐波那契数列

#include <iostream> #include <cstdio> #include <stdlib.h> #include <algorithm> using namespace std; int main() { int a[120]; int k, m; while (1) { cout << "输入阶数k和约定的常数max.k和max用空格分开." << endl; cin >> k &

算法导论-求(Fibonacci)斐波那契数列算法对比

目录 1.斐波那契数列(Fibonacci)介绍 2.朴素递归算法(Naive recursive algorithm) 3.朴素递归平方算法(Naive recursive squaring) 4 .自底向上算法(Bottom-up) 5. 递归平方算法(Recursive squaring) 6.完整代码(c++) 7.参考资料 内容 1.斐波那契数列(Fibonacci)介绍 Fibonacci数列应该也算是耳熟能详,它的递归定义如上图所示. 下面2-6分别说明求取Fibonacci数列的

JS写斐波那契数列第n项

斐波那契数列:1 1 2 3 5 8 13 21 34 ... 数列特点:f(n)=f(n–1)+f(n–2)  后一项等于前两项之和 var a=0: var b=1: var c: var n=2://第n项 for(var i=0:i<n:i++){ c=b: b=a+b: a=c: } console.log(b)://打印第n项

01-封装函数求斐波那契数列第n项

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <script> //需求:封装一个函数,求斐波那契数列的第n项 alert(getValue()); //定义一个函数 function getValue(n){ //回顾

剑指offer7: 斐波那契数列第n项(从0开始,第0项为0)

1. 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 2. 思路和方法 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1.1.2.3.5.8.13.21.34.……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1

-----------------------算法学习篇:斐波拉契数列------------------------

------------------------------书瓖果---------------------------------- 1.性能较差的递归解决算法 int fib(int n) { if(n <= 1) { return n; } else { return fib(n-1) + fib(n-2); } } 2.性能较好的动态规划算法:计算出一个值后将其保存在一个数组中,后面再用时,就不用重新计算 int fib2(int n) { int i; int array[n]; ar