黑马程序员技术交流社区
标题:
求斐波那契数列第n项问题,有没有更简单的做法
[打印本页]
作者:
cjmjava
时间:
2015-4-24 13:37
标题:
求斐波那契数列第n项问题,有没有更简单的做法
package com.itheima;
/**
*1、求斐波那契数列第n项,n<30
*斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
*@author陈建明
*/
/*
* 斐波那契数列的规律是从第三个数开始,后面的数是前面两个数的和
*/
//导键盘录入包
import java.util.Scanner;
class Test1
{
public static void main(String[] args)
{
//键盘录入一个数
Scanner sc = new Scanner(System.in);
System.out.println("请输入你想斐波那契数列第几项(<30):");
int n = sc.nextInt();
//打印出feiBo方法的返回值
System.out.println("斐波那契数列第"+n+"项为:"+feiBo(n));
}
//定义求斐波那契数列第n项的方法
public static int feiBo(int n)
{
//定义a,为第一个数;b为第二个数
int a = 1 ,b = 1;// ,c = 2;
//用循环来进行累加,a表示奇数位上的数,b表示偶数位上的数
for (int i = 1; i < n/2 ; i++ )
{
a = a + b;
b = a + b;
}
//判断输入的数是奇数还是偶数,如果是偶数就返回b
if (n % 2 == 0)
{
return b;
}
//如果是奇数,要把a少做的一次运算补上
else
{
a = a + b;
return a;
}
}
}
作者:
rolan
时间:
2015-4-24 13:53
public class Test2 {
public static void main(String[] args) {//在主函数里调用方法,并传入项数n
founction(30);
}
public static void founction(int n){//定义一个方法,打印出斐波那契数列的值
for(int i=1;i<n;i++){
System.out.println(fos(i));
}
}
public static int fos(int n){//创建一个方法,用于获取斐波那契数列第n项,n<30
if(n==1 || n==2){
return 1;
}else {
return fos(n-1)+fos(n-2);
}
}
}
复制代码
作者:
优质码农
时间:
2015-4-24 13:54
递归的思想
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2