时间:2021-05-20
//Main
复制代码 代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Fibonacci
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Would you like to know which Fibonacci Numbers:");
int number = Convert.ToInt32(Console.ReadLine());
//
Function obj = new Function();
Console.WriteLine();
Console.Write("The {0} Fibonacci number is:{1}", number, obj.Fibonacci(number));
//
Console.WriteLine();
Function obj2 = new Function(number);
Console.Write("The {0} Fibonacci number is:{1}", number, obj2.BottomUpNotRecursion(number));
//
Console.WriteLine();
Console.Write("The {0} Fibonacci number is:{1}", number, obj2.TopDownRecursion(number));
Console.ReadKey();
}
}
}
//Class
复制代码 代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Fibonacci
{
class Function
{
private int[] array;
public Function()
{
}
/// <summary>
/// Function
/// </summary>
/// <param name="length"></param>
public Function(int length)
{
if (length > 0)
{
array = new int[length + 1];
array[0] = 1;
array[1] = 1;
}
if (length == 0)
{
array = new int[1];
array[0] = 1;
}
}
/// <summary>
/// Fibonacci数列定义为:
/// 无穷数列1,1,2,3,5,8,13,21,34,55,……
/// ┌ 1 n=0
/// F(n)=│ 1 n=1
/// └ F(n-1)+F(n-2) n>1
/// </summary>
/// <param name="number">第几个斐波那契数</param>
/// <returns></returns>
public int Fibonacci(int number)
{
if (number <= 1)
{
return 1;
}
else
{
return Fibonacci(number - 1) + Fibonacci(number - 2);
}
}
/// <summary>
/// 动态规划思想:
/// 1.自底向上非递归算法
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public int BottomUpNotRecursion(int number)
{
int copynumber = 0;
if (number < 2)
{
copynumber = 1;
}
else
{
int one = array[0];
int two = array[1];
for (int i = 2; i < array.Length; i++)
{
array[i] = one + two;
one = two;
two = array[i];
copynumber = array[i];
}
}
return copynumber;
}
/// <summary>
/// 2.自顶向下递归算法
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public int TopDownRecursion(int number)
{
if (number <= 2)
{
if (number == 0)
return array[0];
if (number == 1)
return array[1];
if (number == 2)
return array[2] = array[0] + array[1];
}
else
{
//递归只是一个“牵引线”,目的是为了让数组储存值。
TopDownRecursion(number - 1);
array[number] = array[number - 1] + array[number - 2];
}
return array[number];
}
}
}
截图
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
复制代码代码如下:采用递归形式和非递归形式实现斐波那契数列复制代码代码如下:#include"stdafx.h"#includeusingnamespacest
今天我们来使用Python实现递归算法求指定位数的斐波那契数列首先我们得知道斐波那契数列是什么?斐波那契数列又叫兔子数列斐波那契数列就是一个数列从第三项
如何生成斐波那契數列斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契
斐波那契数列(Fibonacci)最早由印度数学家Gopala提出,而第一个真正研究斐波那契数列的是意大利数学家LeonardoFibonacci,斐波那契数列
斐波那契数列当年,典型的递归题目,斐波那契数列还记得吗?deffib(n):ifn==1orn==2:return1else:returnfib(n-1)+fi