Fibonacci数列的计算和转换

/************************************************************************/
/*  GetExtFibonacci                                                         */
/*  输入扩展Fibonacci数列的前2个数字first和second,要得到的数字的序列号num  */
/*  输入:扩展Fibonacci数列对应的序号的数字                                 */
/************************************************************************/
int GetExtFibonacci(int first , int second, int num)
{
	int fibonacciArray[31];
	fibonacciArray[0] = first;
	fibonacciArray[1] = second;
	for(int i = 2; i <= num ; ++i)
	{
		fibonacciArray[i] = fibonacciArray[i-1] + fibonacciArray[i-2];
	}
	return fibonacciArray[num - 1];
}

/************************************************************************/
/*  CalcTotalValueOfExtFibonacci                                        */
/*  输入扩展Fibonacci数列的前2个数字first和second,和数字的序列号num    */
/*  输出:扩展Fibonacci数列对应的序号的数列之前(包括这个数列本身)的所有的数列之和         */
/************************************************************************/
int CalcTotalValueOfExtFibonacci(int first , int second, int num)
{
	int fibonacciArray[31];
	fibonacciArray[0] = first;
	fibonacciArray[1] = second;
	for(int i = 2; i <= num ; ++i)
	{
		fibonacciArray[i] = fibonacciArray[i-1] + fibonacciArray[i-2];
	}
	int sum = 0;
	for(int i = 0; i < num; ++i)
	{
		sum += fibonacciArray[i];
	}

    return sum;
}

时间: 2024-10-12 16:17:35

Fibonacci数列的计算和转换的相关文章

C++项目参考解答:求Fibonacci数列

[项目:求Fibonacci数列] Fibonacci数列在计算科学.经济学等领域中广泛使用,其特点是:第一.二个数是1,从第3个数开始,每个数是其前两个数之和.据此,这个数列为:1 1 2 3 5 8 13 21 34 55 89 --,请设计程序,输出这个数列,直到这个数字超过10000. [提示]数列可以表示为: {f1=f2=1fn=fn?1+fn?2,n>2 [参考解答] #include <iostream> using namespace std; int main( )

编程之美 2.9 斐波那契(Fibonacci)数列

编程之美 2.9 斐波那契(Fibonacci)数列 斐波那契的递归表达式如下 F(n)=F(n-1)+F(n-2) n>=2 F(1)=1 F(0)=0 书中提到了三中解决方法 第一种:直接运用递归的方法来进行求解 package org.wrh.programbeautiful; import java.util.Scanner; public class Topic2_9 { public static void main(String[] args) { Topic2_9 t=new T

蓝桥杯算法训练 java算法 Fibonacci数列

问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n. 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数. 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单. 样例输入 10 样例输出 55 样例输

Fibonacci数列

问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n. 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数. 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单. 样例输入 10 样例输出 55 样例输

数据结构(1)—fibonacci数列的复杂度

开始第二遍复习数据结构,决定把一些有意思的题目做个简单的小结,第一个遇见的是这个经典的Fibonacci数列,题目要求是求这个数列的时间复杂度,对于这个数列,我也不作过多的介绍,下面是对数列的几种简单的实现 1.初始版 long fibonacci1(int n){ if(n==0) return 0; if(n==1) return 1; if(n>1){ return fibonacci1(n-1)+fibonacci1(n-2); } }//递归 这种写法是每一个初学者第一次接触到递归时都

fibonacci数列的两种求解方式:基础递归VS动态规划

/* * 基础解法,按照递归方法求解,该算法的运算时间是指数级增长的 * 这种算法对于相似的子问题进行了重复的计算,因此不是一种高效的算法 */ public class FibonacciRecursion { //-----------计算Fibonacci数列值的递归函数-------------- public static int fib(int n){ if(n==1||n==2){//序列中第1,2个数为1 return 1; } return fib(n-1)+fib(n-2);

蓝桥杯 入门 Fibonacci数列

问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n. 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数. 样例输入 10 样例输出 55 样例输入 22 样例输出 7704 数据规模与约定 1 <= n <= 1,000,000. 分析 由递推公式可知 ,我们用 a, b, c表示fn ,fn-1 ,fn -2 a=b+c,输入n整

求Fibonacci数列的第n项

题目: 定义Fibonacci数列如下: 方法一: 递归的方法,代码如下: #include<iostream> using namespace std; int Fibona(int n) { int m; if (n == 0) return 0; else if (n == 1 || n == 2) return 1; else { m = Fibona(n - 1) + Fibona(n - 2); return m; } } int main() { cout << &q

算法笔记1——蓝桥杯-入门训练 Fibonacci数列

1.问题 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n. 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数. 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单. 样例输入 10 样例输出 5