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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

用语句求去 谢谢了

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

4 个回复

正序浏览
小爷邱烙 发表于 2014-10-30 21:56
第二个写法应该用for循环控制数列长度,懒得改了,知道思路就行

很明确 希望给你加技术分
回复 使用道具 举报
package com.itheima;  /**  * 第二题 :求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55  * @author wl-pc  * 思路:斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在  *    数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)  *   (n>=2,n∈N*)。  */ import java.util.*;  public class Test2 {         public static void main(String[] args) {                 fibonaxiePrint(); // 调用输出方法         }          // 定义一个方法,按提示从控制台输入项数n的值,随后打印出斐波那契数列的值         public static void fibonaxiePrint() {                 // 从键盘上接收一个值                 Scanner in = new Scanner(System.in);                  sop("输入项数:");                 int n = in.nextInt();                 if (n > 0) {                         sop("斐波那契数列第" + n + "项为:" + fibonaxie(n));                         in.close();                 }         }          // 定义一个函数用于获取斐波那契数列第n项,n<30         public static int fibonaxie(int n) {                 // 定义一个int类型的数列                 int[] arr = new int[30];                  // 令数列第一项和第二项都是1                 arr[0] = arr[1] = 1;                  // 循环剩下的数列项数                 for (int x = 2; x < 30; x++) {                          // 斐波那契数的计算公式                         arr[x] = arr[x - 1] + arr[x - 2];                  }                 return arr[n - 1];         }          // 定义一个简化输出方法         public static void sop(Object obj) {                 System.out.print(obj);         } }
回复 使用道具 举报
第二个写法应该用for循环控制数列长度,懒得改了,知道思路就行
回复 使用道具 举报
本帖最后由 小爷邱烙 于 2014-10-30 21:52 编辑

斐波纳数列 第一项为1,第二项为1,之后每一项都等于前两项的和
一种算法是根据该数列的定义,操作一个数组,依次存入数列

  1. int a[] = new int[30];
  2. int n;
  3. a[0]=1;
  4. a[1]=1;
  5. System.out.println(a[0]);
  6. System.out.println(a[1]);
  7. for(n=2;n<30;n++){
  8.   a[n]=a[n-1]+a[n-2];
  9.   System.out.println(a[n]);
  10.      }  
复制代码

常见方法是用临时变量交换每一项的值
  1. int a=0,b=1,t;
  2. while(b<=30){
  3. System.out.println(b);
  4. t=b;//将b(第二项)的值赋给a(第一项)
  5. b=a+b;//b存储ab的和,成为第三项
  6. a=t;//一直循环下去,得到下一项
  7. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

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