java 蓝桥杯 递归 斐波那契数列

Posted //我是小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 蓝桥杯 递归 斐波那契数列相关的知识,希望对你有一定的参考价值。

斐波那契数列

问题描述
一个有规律的数列前6项为 1 1 2 3 5 8 ,我们称之为斐波那契数列,请你求出斐波那契数列第n项是什么。
样例输入
6
样例输出
8

思路分析
1,在解题之前,我们来看看什么是(递归)递归其实就是一个函数,并且是一个自己调用自己,有结束出口的一个函数,
①:明确你这个函数想要干什么
对于递归,我觉得很重要的一个事就是,这个函数的功能是什么,他要完成什么样的一件事,而这个,是完全由你自己来定义的。也就是说,我们先不管函数里面的代码什么,而是要先明白,你这个函数是要用来干什么。
②:寻找递归结束条件
所谓递归,就是会在函数内部代码中,调用这个函数本身,所以,我们必须要找出递归的结束条件,不然的话,会一直调用自己,进入无底洞。也就是说,我们需要找出当参数为啥时,递归结束,之后直接把结果返回,请注意,这个时候我们必须能根据这个参数的值,能够直接知道函数的结果是什么。
③:找出函数的等价关系式
我们要不断缩小参数的范围,缩小之后,我们可以通过一些辅助的变量或者操作,使原函数的结果不变。额。。。通俗一点来说就是要找到规律和公式,写出递归体!这一点也是递归的难点。
2,了解递归之后我们再来看看我们的斐波那契数列,他除了第一项和第二项之外,其他项的值都等于他的前两项的和!那么就是说我们可以转换成公式Fn=F(n-1)+F(n-2),找到公式我们就好办啦,嘎嘎嘎。。。
3,切记!递归出口也是重中之重!(见代码演示)

代码演示

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		//我们先接收,然后调用递归方法直接输出结果
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		System.out.println(f(n));
	}
	public static int f(int n) {
		//这里是出口 当递归递到数列的前两项之后,我们返回前两项的值
		//后面的项自然可以根据前两项的值依次计算出结果
		if(n==1)
			return 1;
		if(n==2)
			return 1;
		//递归体 就是我们数列的公式 Fn=F(n-1)+F(n-2) 那么这个函数最终返回的就会就是第n项的值
		return f(n-1)+f(n-2);
	}
}

以上是关于java 蓝桥杯 递归 斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯 历届试题 斐波那契

蓝桥杯今日份练习

08《算法入门教程》递归算法之斐波那契数列

斐波那契递归和非递归算法

java用递归编程求斐波那契数列第n项

谁能帮我用JAVA编写一个斐波那契数列,用eclipse实现,代码不对不采纳!