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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 官珺伟 高级黑马   /  2013-12-31 05:54  /  1945 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 官珺伟 于 2013-12-31 10:52 编辑
  1. class Test3

  2. /*求斐波那契数列第n项,n<30
  3. 斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55

  4. 1 1
  5. 2 3
  6.   5 8
  7.    13 21
  8.     34  55
  9.    
  10. */
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 int sum (29);
  15.                
  16.                 System.out.println("斐波那契数列前n项是"+sum);
  17.         }

  18.         
  19.     public int f(int n)
  20.         {

  21.                 if(n == 1 || n == 2)

  22.                 return 1;

  23.                 else

  24.                 return f(n-1) + f(n-2);

  25. }


  26.         
  27. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

7 个回复

倒序浏览
给你个参考吧,还不完善,能实现功能
  1. package com.itheima;

  2. import java.util.Scanner;

  3. /**
  4. * 第三题:
  5. * 求斐波那契数列第n项,n<30
  6. * 斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
  7. */

  8. public class Test3 {

  9.        
  10.         public static void main(String[] args) {
  11.                 System.out.print("请输入一个大于1小于30的整数:");
  12.                 Scanner sc = new Scanner(System.in);
  13.                 int inputNumber = sc.nextInt();
  14.                 while(inputNumber<1 || inputNumber>30){
  15.                         System.out.print("您的输入不合法,请输入一个大于1小于30的整数:");
  16.                         inputNumber = sc.nextInt();
  17.                 }
  18.                 int resultNumber = getFibonacci(inputNumber);
  19.                 System.out.println("斐波那契数列第"+inputNumber+"项的值是:"+resultNumber);
  20.         }
  21.        
  22.         /**
  23.          * 利用递归的思想得出斐波那契数列第n项
  24.          */
  25.         public static int getFibonacci(int n){
  26.                 int result = 0;
  27.                 if(n ==1 || n ==2){
  28.                         result = 1;
  29.                 }else{
  30.                         result = getFibonacci(n-1) + getFibonacci(n-2);
  31.                 }
  32.                 return result;
  33.         }

  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 75100313 于 2013-12-31 08:43 编辑
  1. package com.mth.test;

  2. public class Test1 {

  3.         public static int f(int n) {

  4.                 if (n == 1 || n == 2)

  5.                         return 1;
  6.                 else
  7.                         return f(n - 1) + f(n - 2);
  8.         }

  9.         public static void main(String[] args) {
  10.                 int total = 0;
  11.                 int n = 3;//想要计算 的项数
  12.                 for (int i = 1; i <= n; i++) {
  13.                         total += f(i); //总和
  14.                 }

  15.                 System.out.println("斐波那契数列前"+n+"项和是" + total);

  16.         }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报

  1. public class Test2 {

  2.         /**
  3.          * @param args
  4.          */
  5.        
  6.         public int feiBo(int n) {
  7.                
  8.                
  9.                 if (n>=30 || n<=0) { //n不在范围之内,不予执行
  10.                         System.exit(0);
  11.                 }
  12.                
  13.                 if (n == 1 || n == 2) {
  14.                         return 1;
  15.                 }else{
  16.                         return feiBo(n-1)+feiBo(n-2);//递归
  17.                 }
  18.                
  19.         }
  20.        
  21.         public static void main(String[] args) {
  22.                 System.out.println(new Test2().feiBo(29));
  23.         }

  24. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
我是这样想的。。。仅供参考
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 //分析:规律是第三项等于前两项的和,
  4.                
  5.                 //先定义出前两项均为1,因为从第三项开始循环,所以前两项直接打印
  6.                 int x = 1, y = 1, z;
  7.                 System.out.println("斐波那契数列第1项是:1");
  8.                 System.out.println("斐波那契数列第2项是:1");
  9.                
  10.                 for(int j=3;j<30;j++){
  11.                         //第三项为它前两项的和
  12.                         z = x + y;
  13.                         //第三项运算完以后,右移一向赋值
  14.                         x = y;
  15.                         y = z;
  16.                        
  17.                         System.out.println("斐波那契数列第"+j+"项是:"+z);
  18.                 }
  19.         }
  20. }
复制代码
回复 使用道具 举报
这次解答。。。
1, int sum (29);//因为调用方法有int类型的返回值,所以要用int 类型变量接收
应该为int sum = f(29);
2, public int f(int n)//因为主函数要调用所以必须定义成静态的
应该为public static int f(int n)

改完以后再试试就oK了
  1. class Test3

  2. /*求斐波那契数列第n项,n<30
  3. 斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55

  4. 1 1
  5. 2 3
  6.   5 8
  7.    13 21
  8.     34  55
  9.    
  10. */
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 int sum =  f(29);
  15.                
  16.                 System.out.println("斐波那契数列前n项是"+sum);
  17.         }

  18.         
  19.     public static int f(int n)
  20.         {

  21.                 if(n == 1 || n == 2)

  22.                 return 1;

  23.                 else

  24.                 return f(n-1) + f(n-2);

  25. }


  26.         
  27. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 @翱翔@ 于 2013-12-31 13:05 编辑

class Test3  /*求斐波那契数列第n项,n<30 斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55  1 1  2 3   5 8    13 21     34  55     */ {        
          public static void main(String[] arg)  {               
                                                                                    int sum (29);    //你的方法你定义的方法不一致,应该是 f(29)                           
                                                                                     System.out.println("斐波那契数列前n项是"+sum);         }            
                                                                                           public int f(int n)         {                  
                                                                                                                                       if(n == 1 || n == 2)                  
                                                                                                                                        return 1;                  
                                                                                                                                     else
                                                                                                                                    {               
                                                                                                                                      return f(n-1) + f(n-2);  
                                                                                                                                    }
                                                                         }           
}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
class Test3

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

1 1
2 3
  5 8
   13 21
    34  55
   
*/
{
        public static void main(String[] args)
        {
                int sum =  f(29);
               
                System.out.println("斐波那契数列前n项是"+sum);
        }

        
    public static int f(int n)
        {

                if(n == 1 || n == 2)

                return 1;

                else

                return f(n-1) + f(n-2);

}


        
}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马