zoukankan      html  css  js  c++  java
  • 用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) );//  在输出的时候调用函数
        }
        public static int  m1(int i){   //创建方法  
            if (i == 1) {   //if如果... 如果等于1  就执行下面java语句
                return 0;    // 返回值 为0,返回给m1  并且结束一下java语句
            }
            if (i == 2) {    //if如果...  如果等于2  就执行下面java语句
                return 1;    //返回值  为1  并结束一下Java语句
            } else {    //如果不==2  也不==1  就执行一下java语句
                int a = 0;   // 在这里代表斐波那契数列的第一个数 用int数据类型  声明一个变量  变量名字为a  并赋值为0
                int b = 1;   //  这里代表斐波那契的第二个数
                int c = 0;   //这里代表斐波那契的第三个数   
                int e = 0;
                for(int j=3; j <=i ; ++j){  //for循环 这里这个i-2 是什么意思呢?因为如果等于3的时候,是这里运算的第一个,就是等于3的时候,在这里等于1 额  可以这么说吧 因为等于1  和 2 的时候都在上面输出,要是在这里不减去2的话,会循环三次  那就影响结果了
                    //recycle code block
                    c=a+b;   //  把a和b的和  赋值给c  因为除了前两位  后面的每一位都是由前两位的和组成的
                    e+=c;   //这是把前N列的数加起来
                    System.out.println( a+"+"+b+"斐波那契数列的第 "+j+" 位的值为"+"="+c );  //输出 a+b=c
                    a=b;  //b代表数列的第二个,a代表数列的第一个,c代表数列的第三个  我吧b赋值给a  a就等于第二个了
                    b=c;   //再把c赋值给b  b就等于数列的第三个了   那么下次循环,c 就是数列的第四个了  一次类推
                    
                }
                System.out.println( "斐波那契数列的前 "+ i +" 位数的和为: "+e );  //这是输出前N列的和
                return c;   //等输出完设置的数列  再把c 返回到m1   再返回到方法的调用出(也就是main方法的输出哪里,因为在那里调用的,)方法不调用不执行,调用才执行,并把值返回到方法的调用出
                

            }
        }
    }

    这是递归写的

    public class Qian_N_Wei_He{
        public static void main(String[] args){
            int i = 30;  //int数据类型创建i  这里表示 斐波那契 第 i 位数字
            int he = 0; // 后面+=   表示 1~第i位  的和
            for(int j=i; j >=1 ; --j){  //for循环 初始值为i  i的值可以自己随意设置
                he += m1(j);  //让第j次的数  和he相加 循环到下一次  就是j-1的数相加
            }
            System.out.println( "斐波那契 1~"+i+"位数 的和为: " +he );  // 输出
            
        }
        public static int m1(int n){  //创建一个方法
            if (n == 1) {   //n==1的时候 返回值为0  否则就执行一下语句
                return 0;  //返回到m1
            }
            if (n == 2) {  // n==2的时候 ,返回值为1  否则就执行一下语句
                return 1;  //返回到m1
            }else{   //否则就执行一下语句
                return m1(n-1) + m1(n-2);  //这是第n位的那个数值  也就是咱们设置的第 i  位的数值
            }
        }
    }

  • 相关阅读:
    linux shell script
    API Gateway : Kong
    rabbitmq management advance lesson
    Python Base HTTP Server
    linux 笔试题
    dll return a string
    friend class
    GCC 编译使用动态链接库 LD
    设计模式学习(四)——单例模式
    简单聊聊TestNG中的并发
  • 原文地址:https://www.cnblogs.com/xrmqbl/p/4700557.html
Copyright © 2011-2022 走看看