黑马程序员技术交流社区
标题:
关于斐波纳数列 n<30,求程序,我现在只有了语句
[打印本页]
作者:
菜鸟小6
时间:
2014-10-30 20:45
标题:
关于斐波纳数列 n<30,求程序,我现在只有了语句
用语句求去 谢谢了
作者:
小爷邱烙
时间:
2014-10-30 21:47
本帖最后由 小爷邱烙 于 2014-10-30 21:52 编辑
斐波纳数列 第一项为1,第二项为1,之后每一项都等于前两项的和
一种算法是根据该数列的定义,操作一个数组,依次存入数列
int a[] = new int[30];
int n;
a[0]=1;
a[1]=1;
System.out.println(a[0]);
System.out.println(a[1]);
for(n=2;n<30;n++){
a[n]=a[n-1]+a[n-2];
System.out.println(a[n]);
}
复制代码
常见方法是用临时变量交换每一项的值
int a=0,b=1,t;
while(b<=30){
System.out.println(b);
t=b;//将b(第二项)的值赋给a(第一项)
b=a+b;//b存储ab的和,成为第三项
a=t;//一直循环下去,得到下一项
}
复制代码
作者:
小爷邱烙
时间:
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