递归求斐波那契数

关于递归这是一个稍微拐弯的算法。
对于斐波那契数,你要明白他长什么样{1,1,2,3, 5, 8, 13, 21…}
这里我们只说递归求法

可以看出前两个数是1,后面的数都是前两个数的和。
假设求六个数可以看出是8,即3+5=8
即第n个数等于(n-2)+(n-1)

我们可以根据代码看下递归思路(个人理解哈哈)
思路:
①main方法里new了一个新对象名fb
②定义两个属性,同时res对象里调用一个方法,这里就会开辟一个新栈独立于main方法外。
③这时候看fibonacii方法,这里构造一个参数,里面if进行判断
④这里你要明确使递归结束的语句 return fibonacii(n-1)+fibonacii(n-2)
这里的递归就在于if判断里
其实你画个图的话会更加有利于你理解递归。
⑤接着就是第一个输出句,前面你调用完就会释放栈,就又返回到main方法里了

package cheap01;

public class Recursion {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		cheap1 fb=new cheap1();
		int n=0; // 确定你要输出数的位置
		int res = fb.fibonacii(n); //定义一个对象名作为斐波那契数 
		
		System.out.println("输出第"+n+"个数");
		System.out.println("第"+(n)+"个斐波那契数是:"+res);
	}
}
class cheap1{ //定义一个对象

	//定义一个int返回类型的fibonacii方法 传入一个形参n
	public int fibonacii(int n) { 
		
		if(n>=1) {
		//根据斐波那契的规则进行判断
		if(n==1 || n==2) {
			return 1;
		}else {
		//重要的是下面的返回类型
			return fibonacii(n-1)+fibonacii(n-2);
		}
	}
		else { 
			System.out.println("请输入合适的数字");
			return -1 ;//这里代表你输入的数是不合规范的
		
		
		}
		}
	}

斐波那契重要的思路就是你要知道递归结束的条件
关于递归的思路,可以看看视频(推荐老韩的)O(∩_∩)O哈哈~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【问题描述】 【问题描述】编写函数f,功能是用递归的方法斐波那契数列的第n项,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f斐波那契数列的第n项,并在主函数中输出。 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函数f,功能是用递归的方法斐波那契数列的第n项,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f斐波那契数列的第n项,并在主函数中输出。 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函数f,功能是用递归的方法斐波那契数列的第n项,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f斐波那契数列的第n项,并在主函数中输出。 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 【问题描述】编写函数f,功能是用递归的方法斐波那契数列的第n项,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f斐波那契数列的第n项,并在主函数中输出。 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8 斐波那契数列:1,1,2,3,5,8,13,21…… 【输入形式】3 【输出形式】2 【样例输入】6 【样例输出】8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值