本帖最后由 夸克 于 2015-8-21 05:32 编辑
- /**
- * 需求:求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
- * 思路:不知道这段代码你从哪儿找的,你的问题也不是很清楚,就当你是初学者了
- * 斐波那契数列是一组有规律的数列,很有名可以百度下,基本规律就是从第三项开始,值等于前两项之和
- * 如:2=1+1,3=1+2,5=2+3.......
- * 数学上我们学过通项公式吧,就是用字母代表数列变化规律的,F(n)就表示这个数列的第n项值。
- * 那比如设第n项值为F(n),根据 他的规律,他必然等于前两项的和,即F(n)=F(n-1)+F(n-2)
- *
- * 这断代码中前半部分涉及到IO流,就是个固定格式,等你学了就理解了。
- * */
- import java.util.Scanner;
- //求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
- public class Test1
- {
- public static void main(String[] args)
- {
- //代表要求的第n项数字
- int n;
- //代表第n项的值
- int fn;
- //这句话是获取键盘输入的值
- Scanner scanner=new Scanner(System.in);
- //打印函数,提示输入
- System.err.println("请输入30以内的整数:");
- //调用Scanner的方法,获取输入的整数值
- //这里可以加判断语句,确保输入的数值符合条件
- n=scanner.nextInt();
- //调用我们写的peibo函数,得到第n项值
- fn=peibo(n);
- System.out.println("斐波那契数列第"+n+"项为:"+fn);
- }
- //这里是我们定义的求第n项值的函数
- public static int peibo(int n)
- {
- //这里其实就是数学上根据规律关系和特殊值项求通项公式
- //这里判断有两个作用,如果你输入的数字是1或者2时,直接返回1不需要进行后边的语句,避免n-1或n-2发生异常
- //再就是为递归提供出口
- if(n==1 || n==2)
- {
- return 1;
- }
- /*
- 在函数中调用自身函数,在编程中就称作递归。
- 运行到这里说明输入的值不是1或者2,那么就会运行下边return语句。
- 从逻辑上,return返回值即这个函数的返回值peibo(n-1)+pei(n-2)=peibo(n),符合我们在思路中说的规律。
- 具体流程见下图
- */
- else
- return peibo(n-1)+peibo(n-2);
- }
- }
复制代码
|