1、问题
求斐波那契数列的第n项
2、分析
什么是斐波那契数列?
1 1 2 3 5 8 13 21…
从第三项开始,该项等于前两项之和。
3、代码演示
public class FibNumber {
public static void main(String[] args) {
System.out.println("请输入你要求第几项:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(fibNumber(n));
}
private static int fibNumber(int n) {
if(n==1||n==2){
return 1;
}
int count=0;
if(n==3){
count++;
}
return fibNumber(n-1)+fibNumber(n-2);
}
}
优化:
package demomethod03;
import java.util.Scanner;
/**
* 斐波那契数
* 求斐波那契数列的第n项。(迭代实现)
* 什么是斐波那契数列?
* 1 1 2 3 5 8 13 21......
* 从第三项开始,该项的数字等于前两项的数字之和
* 迭代实现:采用循环
* 求第n项,首先用Scanner类从键盘输入n
* 调用方法返回第n项的数字
* 方法三要素:
* 返回值类型 int
* 方法名称 fib
* 参数列表 int n
*
*
*/
public class FibNum {
public static void main(String[] args) {
System.out.println("请输入你需要求第几项:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int ret=fibs(n);
System.out.println(ret);
}
public static int fibs(int n) {
if (n==1||n==2){
return 1;
}
int current=1;
int bef1=1;
int bef2=0;
while(n>2){
n = n - 1;
bef2 = bef1;
bef1 = current;
current = bef1 + bef2;
}
return current;
}
}
4、运行结果