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);
	}
}

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sssory

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值