斐波拉契数列的代码书写和分析

什么是斐波拉契数列?

  斐波拉契数列是指一个数列,其前两位等于1,第i位等于第i+1位于第i+2位相加。(1 1 2 3 5 8 13 ···)

斐波拉契数列实现代码的分析。

  用户输入一个长度值,然后得到该长度的斐波拉契数列。要想实现这个功能,我们可以分成三个模块去书写代码:

      1.获取用户输入的长度,保存到变量n中。

      2.创建长度为n的数组,依次保存每一位数字。

      3.遍历输出数组内容。

  这样的话,我们只需要实现每个模块的功能,整个代码就能编写完成。

代码的编写

          //模块1
            Console.Write("请输入一个斐波拉契数列的长度:");
            int n = int.Parse(Console.ReadLine());
          //模块2、3
            int[] numbers = new int[n];
            for (int i = 0; i < numbers.Length; i++)
            {
                if (i <= 1)
                {
                    numbers[i] = 1;
                }
                else {
                    numbers[i] = numbers[i - 1] + numbers[i - 2];
                }
                Console.Write(numbers[i] + " ");
            }
            Console.ReadLine();
时间: 2024-07-31 15:32:38

斐波拉契数列的代码书写和分析的相关文章

浅谈C#中的斐波拉契数列

突然对那些有趣的数学类知识感兴趣了,然后就简单研究了一下斐波拉契数列,看看它的有趣之处! 斐波拉契数列(Fibonacci Sequence),又称黄金分割数列,该数列由意大利的数学家列奥纳多·斐波那契发现的.这种数列指的是这样一个数列:0.1.1.2.3.5.8.13.21. 34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*). 用C#实现斐波拉契数列的代码: Console.Write("请输入一个长

随机求斐波拉契数列第n位的代码

1------------------------------------------------------------ package oo.day02;import java.util.Scanner;public class FibonacciSequence { public static void main(String[] args) { System.out.println("请输入斐波拉契数列第n项,n>0"); Scanner scan=new Scanner

青蛙跳台阶问题-斐波拉契数列

题目1:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级.求总共有多少种跳法 首先我们考虑最简单的情况,加入只有1级台阶,那显然只有一种跳法,如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级:另外一种就是一次跳2级 现在我们来讨论一般情况.我们把n级台阶时的跳法看成是n的函数,记为f(n).当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1):另外一种选择是第一次跳2级,此时跳法数目等于后面剩下的

在c#中编写斐波拉契数列程序

思路:首先因为输出的是一个数列,又因为不定长,所以要见一个集合来装数列,其次确定第一个数和第二个数都为1,然后根据斐波拉契数列的特点,确定是一个循环语句,再根据从第三位开始,每个数字都是前两个数的和的特点写出代码.代码如下: while(true){Console.Write("请输入斐波拉契数列的长度:");int len = int.Parse(Console.ReadLine());int[] array = new int[len];if (len < 3){Consol

斐波拉契数列的计算方法

面试题9.斐波拉契数列 题目: 输入整数n,求斐波拉契数列第n个数. 思路: 一.递归式算法: 利用f(n) = f(n-1) + f(n-2)的特性来进行递归,代码如下: 代码: long long Fib(unsigned int n) { if(n<=0) return 0; if(n==1) return 1; return Fib(n-1) + Fib(n-2); } 缺陷: 当n比较大时递归非常慢,因为递归过程中存在很多重复计算. 二.改进思路: 应该采用非递归算法,保存之前的计算结

c语言:写一个函数,输入n,求斐波拉契数列的第n项(5种方法,层层优化)

写一个函数,输入n,求斐波拉契数列的第n项. 斐波拉契数列:1,1,2,3,5,8...,当n大于等于3时,后一项为前面两项之和. 解:方法1:从斐波拉契数列的函数定义角度编程 #include<stdio.h> int fibonacci(int n) { int num1=1, num2=1, num3=0,i; if (n <= 2) { printf("斐波拉契数列的第%d项为:%d\n",n,num1); } else { for (i = 2; i <

如何打印斐波拉契数列以及质数列表

这其实是两道非常基础和简单地题.但somehow每隔一段时间我老是会不经意地想起这两个问题,有时候卡克没有一下想起解法还会急的直冒汗................... 言归正传,贴出这两题代码 (1)打印斐波拉契数列 // Java program for Fibonacci number using Loop. public static int fibonacciLoop(int number){ if(number == 1 || number == 2){ return 1; } i

百度之星题--斐波拉契数列

题目: du熊学斐波那契I Time Limit : 2000/1000ms (C/Other) Memory Limit : 65535/32768K (C/Other) 本次组委会推荐使用C.C++ Problem Description du熊对数学一直都非常感兴趣.最近在学习斐波那契数列的它,向你展示了一个数字串,它称之为"斐波那契"串: 11235813471123581347112358........ 聪明的你当然一眼就看出了这个串是这么构造的:1.先写下两位在0~9范围

斐波拉契数列的递归、非递归、公式法多种方法实现

实现斐波拉契数列:1,1,2,3,5,8...,当n>=3时,f(n)=f(n-1)+f(n-2). 解:求解斐波拉契数列方法很多,这里提供了4种实现方法和代码,由于第5种数学公式方法代码太过繁琐,只做简单介绍 方法一:递归调用,每次递归的时候有大量重复计算,效率低,可将其调用的过程转化成一颗二叉树进行分析,二叉树的总结点个数不超过(2^n-1)个,由于其是不完全二叉树,那么函数计算的次数必小于(2^n-1),时间复杂度为O(2^n):递归调用的深度为n,空间复杂度为O(n) 方法二:非递归数组