斐波那契数列和递归求N阶乘(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
- 点赞
- 收藏
- 关注作者
评论(0)