黑马程序员技术交流社区

标题: 关于斐波纳数列 n<30,求程序,我现在只有了语句 [打印本页]

作者: 菜鸟小6    时间: 2014-10-30 20:45
标题: 关于斐波纳数列 n<30,求程序,我现在只有了语句
用语句求去 谢谢了
作者: 小爷邱烙    时间: 2014-10-30 21:47
本帖最后由 小爷邱烙 于 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. }
复制代码




作者: 小爷邱烙    时间: 2014-10-30 21:56
第二个写法应该用for循环控制数列长度,懒得改了,知道思路就行
作者: wang90ling    时间: 2014-10-30 22:53
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);         } }
作者: 菜鸟小6    时间: 2014-10-31 21:06
小爷邱烙 发表于 2014-10-30 21:56
第二个写法应该用for循环控制数列长度,懒得改了,知道思路就行

很明确 希望给你加技术分




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2