用递归和迭代写斐波那契数列,前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){   //创建方法  
        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方法的输出哪里,因为在那里调用的,)方法不调用不执行,调用才执行,并把值返回到方法的调用出

}
    }
}

时间: 2024-10-21 11:19:17

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

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

用递归和非递归的方法输出斐波那契数列的第n个元素(C语言实现)

费波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数.斐波那契数列.费氏数列.黄金分割数列. 在数学上,费波那契数列是以递归的方法来定义: {\displaystyle F_{0}=0} {\displaystyle F_{1}=1} {\displaystyle F_{n}=F_{n-1}+F_{n-2}}(n≧2) 用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出.首几个费波那契系数是: 0, 1, 1, 2, 3

递归:阶乘、斐波那契数列

阶乘 public static void main(String[] args) { System.out.println(factorial(5));; } //factorial 阶乘 public static long factorial(int n) { if (n == 1) { return 1; } return n*factorial(n-1); } 阶乘画图理解 斐波那契数列递归实现: public static void main(String[] args) { Sys

JS写斐波那契数列第n项

斐波那契数列:1 1 2 3 5 8 13 21 34 ... 数列特点:f(n)=f(n–1)+f(n–2)  后一项等于前两项之和 var a=0: var b=1: var c: var n=2://第n项 for(var i=0:i<n:i++){ c=b: b=a+b: a=c: } console.log(b)://打印第n项

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

求斐波那契数列第n项,n&lt;30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55

public class Test4 { public static void main(String[] args) { int n; int fn; Scanner scanner=new Scanner(System.in); System.err.println("请输入30以内的整数:"); n=scanner.nextInt(); fn=peibo(n); System.out.println("斐波那契数列第"+n+"项为:"+fn

递归小程序之斐波那契数列

1.题目描述 一列数的规则如下: 1.1.2.3.5.8.13.21.34...... 求第30位数是多少, 用递归算法实现. 2.代码实现 1 package com.wcy.october; 2 3 /** 4 * 时间:2016年10月23日 5 * 题目:一列数的规则如下: 1.1.2.3.5.8.13.21.34...... 求第30位数是多少, 用递归算法实现. 6 */ 7 public class RecursionTest1 { 8 9 /** 10 * 用递归算法求解 11

php 写斐波那契数列

1 <?php 2 $arr = []; 3 for($i=1;$i<9;$i++){ 4 if($i==1 || $i ==2){ 5 $arr[$i-1] = 1; 6 }else{ 7 $arr[$i-1] = $arr[$i-2] + $arr[$i-3]; 8 } 9 } 10 print_r($arr); 原文地址:https://www.cnblogs.com/niuben/p/8640980.html

手写代码之写斐波那契数列-传入key值求对应的value

public class Testany { public static void main(String[] args) { int value = number(10); System.out.println(value); } public static int number(int k){ int value = 0; int a = 1; int b = 1; for(int i =1; i<=k;i++){ value= a+b; a = b; b= value; } return