A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1  1  2  3  5  8  13  21  34
  规律:一个数等于前两个数之和
//计算斐波那契数列(Fibonacci)的第n个值
public class Fibonacci{
    public static void main(String args[]){
        int n = Integer.parseInt(args[0]);
        int n1 = 1;//第一个数
        int n2 = 1;//第二个数
        int sum = 0;//和
        if(n<=0){
            System.out.println("参数错误!");
            return;
        }
        if(n<=2){
            sum = 1;            
        }else{
            for(int i=3;i<=n;i++){
                sum = n1+n2;
                n1 = n2;
                n2 = sum;
            }
        }
        System.out.println(sum);
    }
}


//计算斐波那契数列(Fibonacci)的第n个值
//并把整个数列打印出来
public class FibonacciPrint{
    public static void main(String args[]){
        int n = Integer.parseInt(args[0]);
        FibonacciPrint t = new FibonacciPrint();
        for(int i=1;i<=n;i++){
            t.print(i);
        }
    }
    public void print(int n){
        int n1 = 1;//第一个数
        int n2 = 1;//第二个数
        int sum = 0;//和
        if(n<=0){
            System.out.println("参数错误!");
            return;
        }
        if(n<=2){
            sum = 1;            
        }else{
            for(int i=3;i<=n;i++){
                sum = n1+n2;
                n1 = n2;
                n2 = sum;
            }
        }
        System.out.println(sum);
    }
}

4 个回复

倒序浏览
本帖最后由 黑马我来了 于 2012-4-21 08:33 编辑
  1.   public static int  feibo(int n)   
  2. {   
  3.                   
  4.         if(n <= 2)   
  5.         return 1;   
  6. else  
  7. {   
  8.                         
  9. return feibo(n-1)+feibo(n-2);
  10.                   
  11. }   
  12. }
复制代码
呵呵 我是用递归实现的  运用斐波那契数的公式f(n)=f(n-1)+f(n-2),其中n>=2 ,输入任意数字可以得出里面的斐波那契数,不过是得其中的一个数。
回复 使用道具 举报
本帖最后由 张卯 于 2012-4-21 11:07 编辑

还是递归方便啊~不过int可能有些小了,所以我又用long改良了一下~
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(getFib(Long.parseLong(args[0])));
  6.         }

  7.         public static long getFib(long n)
  8.         {
  9.                 if(n<=2)
  10.                 {
  11.                         return 1L;
  12.                 }
  13.                 else
  14.                 {
  15.                         return getFib(n-1)+getFib(n-2);
  16.                 }
  17.         }
  18. }
复制代码
回复 使用道具 举报
import java.util.Scanner;
//计算斐波那契数列(Fibonacci)的第n个值

public class Fibonacci{
    public static void main(String args[]){
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个数n:");
            int n = sc.nextInt();
        
        int n1 = 1;//第一个数
        int n2 = 1;//第二个数
        int sum = 0;//和
        if(n<=0){
            System.out.println("参数错误!");
            return;
        }
        if(n<=2){
            sum = 1;            
        }else{
            for(int i=3;i<=n;i++){
                sum = n1+n2;
                n1 = n2;
                n2 = sum;
            }
        }
        System.out.println(sum);
    }
}
回复 使用道具 举报
import java.util.Scanner;

//计算斐波那契数列(Fibonacci)的第n个值
//并把整个数列打印出来
public class FibonacciPrint{
  public static void main(String args[]){
     Scanner sc = new Scanner(System.in);
     System.out.println("请输入一个数n:");
     int n = sc.nextInt();
      FibonacciPrint t = new FibonacciPrint();
      for(int i=1;i<=n;i++){
          t.print(i);
      }
  }
  public void print(int n){
      int n1 = 1;//第一个数
      int n2 = 1;//第二个数
      int sum = 0;//和
      if(n<=0){
          System.out.println("参数错误!");
          return;
      }
      if(n<=2){
          sum = 1;            
      }else{
          for(int i=3;i<=n;i++){
              sum = n1+n2;
              n1 = n2;
              n2 = sum;
          }
      }
      System.out.println(sum);
  }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马