斐波那契数列和递归求N阶乘(Java递归案例)

举报
辰兮 发表于 2022/03/22 23:34:53 2022/03/22
【摘要】 【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、...

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿你们奔赴在各自的热爱中…


一、斐波那契数列是常见的数学问题,也是常见的递归问题

斐波那契数列的是这样一个数列:1、1、2、3、5、8、13、21、34…,即第一项 f(1) = 1,第二项 f(2) = 1…,第 n 项目为 f(n) = f(n-1) + f(n-2)。求第 n 项的值是多少。

/**
 * 
 * @Description:  [斐波那契数列:递归方式解决]
 * @Author:       辰兮
 * @CreateDate:   2021年1月17日21:22
 */
public class FibonacciSequence {
	
	public static int fibonacci(int n){
		/*递归结束条件*/
		if (n == 2)
			return 1;
		if (n == 1)
			return 1;
		/*递归调用*/
		return fibonacci(n-1) + fibonacci(n-2);
	}
	
	public static void main(String[] args) {
		System.out.println(FibonacciSequence.fibonacci(7));
	}
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

运行结果

13

  
 
  • 1

关于递归一定要明确知道正确的等价函数,第二点是一定要明确知道结束条件

如上即 任何一个数fibonacci(n) = fibonacci(n-1) + fibonacci(n-2);

斐波那契数列前面的数字都知道,即fibonacci(1)为1 ,fibonacci(2) 为1,当n为1或者2 的时候直接出结果,其余情况等于前两项相加,最终演化为xfibonacci(1) +yfibonacci(2) ,函数正确,无论n多大一定可以得出结果。


二、递归求N阶乘

/**
 * @Description:  [递归求N阶乘]
 * @Author:       辰兮
 * @CreateDate:   2021年1月17日21:52:58
 */
public class CalNFactorial {
	public static int f(int n){
		/*递归结束条件*/
		if (n == 1){
			return 1;
		}
		/*递归调用*/
		return n * f(n-1);
	}
	public static void main(String[] args) {
		System.out.println(f(5));
		//5*4*3*2*1 = 120
	}
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

运行结果

120

  
 
  • 1

首先等价函数: f(n)=n*f(n-1)

结束的条件:n=1


注意:关于项目中一定要谨慎使用递归,因为很容易照成StackOverflowError栈溢出异常!

Exception in thread "main" java.lang.StackOverflowError

  
 
  • 1

非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

2021.01.17 22:50 愿你们奔赴在自己的热爱里!

文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。

原文链接:blessing.blog.csdn.net/article/details/112759541

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。