斐波那契前n位的和

public class Fei_bo_na_qi{
    public static void main(String[] args){  //main方法,程序入口
        int i = 10;  //声明一个int类型的变量i,并赋值为10
        int a = 0;   //声明一个int数据类型的变量a
        for(int j=i; j >=1 ; --j){ //for循环:j=i=10,j>=1
            a+=m1(j);  //调用m1方法,并把m1的值赋值给a
        }
        
        System.out.println( a );//输出a的值
    }
    public static int m1(int n){  //声明m1方法,形参为int n,把n=10带入
        if (n==1) { //当n=1时,返回值为0
            return 0;
        }
        if (n==2) { //当n2时,返回值为1
            return 1;
        }else{ //当n既不等于1也不等于2时,执行下面的语句
        return m1(n-1)+m1(n-2);  //把n=10带入后,返回m1(9)+m1(8),--j=9,9>=1;带入后返回m1(8)+m1(7),再把--j=8带入,以此类推,当n=3时,带入后返回m1(2)+m1(1)=0+1=1,则m1(3)=1,m3运行完成后返回m1(4),m1(4)=m1(3)+m1(4-2),m1(3)=1,要把m1(4-2)带入运行一遍,每当m1(n-1)运行一次,都要把m1(n-2)运行一遍;同样把n=10带入后,返回m1(9)+m1(8),把m1(8)带入,--j=7,7>=1;带入后返回m1(6)+m1(5),每运行一次m1(n-2),都要把m1(n-2)运行一遍。最后得出m1的值,赋值给a,最后输出。

斐波那契,这个困扰我半天的谜题,终于给解开了。

时间: 2024-09-28 05:11:08

斐波那契前n位的和的相关文章

The sum - SGU 122(斐波那契前N项和)

直接上代码....... ================================================================================================================ #include<stdio.h> const int MAXN = 41; int main() { long long Fib[MAXN] = {0, 1}, sum[MAXN]={0, 1}; for(int i=2; i<MAXN;

用for循环和递归调用写出1~N的斐波那契数列的和 和第N位的数

首先注意: 代码是从上往下,从左往右执行的!! 这是for循环写的 m=任意数.代表1~多少位的和 public class Fei_Bo_Na_Qi{    public static void main(String[] args){        int m = 30;  //这里代表1~30位的和        System.out.println( "斐波那契数列的第 "+m+" 位数为: "+m1(m) );//  在输出的时候调用函数    }   

斐波那契数列的$O(\logN)$求法

欢迎来访 介绍求斐波那契数列时间复杂度为\(O(\log N)\)的做法之前,我们先看一下快速幂. 快速幂 题目链接 快速幂是数论中非常基础的算法. 当我们要求\(a^b mod p, (1 \le a, b, p \le 10^9)\)时,如果是朴素做法,时间复杂度为\(O(N)\)显然会超时,而快速幂能够做到的是将时间复杂度降到\(O(\log b)\). 做法 首先预处理出:\(a^{2^0}, a^{2^1}, a^{2^2}, a^{2^3}, ..., , a^{2^{\log b}

NYOJ 461-Fibonacci数列(四)(求斐波那契数列前4位)

题目地址:NYOJ 461 思路:斐波那契数列的通项公式为 然后下一步考虑如何产生前4位: 先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);假设给出一个数10234432, 那么log10(10234432)=log10(1.0234432*10^7)[用科学记数法表示这个数]=log10(1.0234432)+7; log10(1.0234432)就是log10(10234432)的小数部分. log10(1.0234432)=0.0

HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】

Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2))的值全部给背了下来. 接下来,CodeStar决定要考考他,于是每问他一

用递归和迭代写斐波那契数列,前n列的和

首先注意: 方法不调用不执行,调用才执行,并且把值返回到方法的调用处!! public class Fei_Bo_Na_Qi{    public static void main(String[] args){        int m = 100;        System.out.println( "斐波那契数列的第 "+m+" 位数为: "+m1(m) );//  在输出的时候调用函数    }    public static int  m1(int i

求斐波那契数列的相邻两项的比值,精确到小数后三位。

未完成,只能假设知道是9和10代入. 代码如下: package zuoye; import java.math.BigDecimal; /* * 求斐波那契数列的相邻两项的比值,精确到小数后三位. * p1,p2,p3......pi,pj,...求pi/pj * 1 1 2 3 5 8 13 * 5/8,8/13,...收敛 */ public class Test { static double feibo(int x){ if(x==1||x==2) return 1; return f

hdu1568&amp;&amp;hdu3117 求斐波那契数前四位和后四位

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1568 题意:如标题所示,求斐波那契数前四位,不足四位直接输出答案 斐波那契数列通式: 当n<=20的时候,不足四位,所以直接打表. 当n>20的时候,大于四位的时候,ans满足这个公式:ans=-0.5*log10(5.0)+num*1.0*log10((1+sqrt(5.0))/2.0); 这个公式是怎么来的呢?我们可以对an取10的对数,根据对数的性质. log10(ans)=log10(1/

黑马入学基础测试(三)求斐波那契数列第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