服务器之家

服务器之家 > 正文

什么是递归?用Java写一个简单的递归程序

时间:2021-08-10 11:38     来源/作者:小明

什么是递归?用Java写一个简单的递归程序

递归的定义

递归(recursion):以此类推是递归的基本思想,将规模大的问题转化为规模小的问题来解决。

递归的要素

自定义递归函数,并确定函数的基本功能
例如Java从键盘输入一个数,求输入这个数的阶乘。这个时候把输入的数字作为形参

  1. int diGuiTest(int n ){
  2. }

找到递归函数循环结束条件
在求阶乘的时候,我们不妨做出如下思考,例如输入的n是5,那么5!是5 * 4 3 * 2 * 1,那是不是可以写成
n
f(n-1)?,程序运行过程如下:
5* f(4)
f(4)相当于重新调用了函数,形参为4
5 * 4* f(n-1)
f(3)相当于重新调用了函数,形参为3
5 * 4* 3* f(n-1)
f(2)相当于重新调用了函数,形参为2
5 * 4* 3 * 2* f(n-1)
f(1)相当于重新调用了函数,形参为1
很容易发现,这时候如果递归调用到n为1的时候,就要结束调用自身
代码如下:

  1. int diGuiTest(int n ){
  2. if(n==1){
  3. return 1;
  4. }
  5. else{
  6. return n*f(n-1);
  7. }
  8. }

代码示例

求1–100之间所有自然数的和

  1. int sum (int n ){
  2. if(n==1){
  3. return 1 ;
  4. }
  5. else{
  6. return n+sum(n-1);
  7. }
  8. }

斐波拉契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2) (n ≥ 2,n ∈ N*)

  1. int fibonacci(int n ){
  2.  
  3. if (n<=1){
  4. return n;
  5. }
  6. else {
  7. return fibonacci(n-1)+fibonacci(n-2);
  8. }
  9.  
  10. }

汉诺塔问题

什么是递归?用Java写一个简单的递归程序

首先我们考虑最简单的情况:

什么是递归?用Java写一个简单的递归程序

将最上面的一块放到B,再将最下面一块放到C,再把最上面一块从B放到C即可

什么是递归?用Java写一个简单的递归程序

  1. public class Hanio {
  2. public static void main(String[] args) {
  3. char A='A';
  4. char B='B';
  5. char C='C';
  6. hannio(3,A,B,C);
  7. }
  8. static void hannio(int paltfrom,char A,char B, char C){
  9. if (paltfrom==1){
  10. move (A,C);
  11. }else {
  12. hannio(paltfrom-1,A,C,B);//上面两个盘子,通过C柱到B柱
  13. move (A,C);
  14. hannio(paltfrom-1,B,A,C);//
  15. }
  16. }
  17. static void move(char A,char B){
  18. System.out.println(A+"---->"+B);
  19. }
  20. }

到此这篇关于什么是递归?用Java写一个简单的递归程序的文章就介绍到这了,更多相关Java 递归内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_44644993/article/details/113834046

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部