深入理解递归的方法调用(含实例迷宫问题、汉诺塔、猴子吃桃、斐波拉契、阶乘))

本文深入探讨递归算法,包括其基本概念、调用机制和经典实例,如迷宫问题、汉诺塔、斐波那契数列以及猴子吃桃问题。通过递归解决复杂问题,强调找出问题的缩小条件和终止条件。文章还介绍了如何用递归方法解决老鼠出迷宫和汉诺塔问题,帮助读者加深对递归的理解。
摘要由CSDN通过智能技术生成

= = = = 方法递归调用 = = = =

前言:刚开始学习递归的时候是有一定困难的,光用自己的脑子去想,去无限被套娃真的是非常的痛苦…这一模块拖了好长时间,通过查找一些资料也终于有了自己的一些理解和心得体会。

一、基本介绍
1、简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂问题,同时可以让代码变 得简洁。

二、递归调用机制(举例说明)
以下两个问题都可参考递归的重要规则,只有知道它的规则、原理才能更好的理解它。
1.执行一个方法时,就创建一个新的受保护的独立空间(栈空间)
2.方法的局部变量是独立的,不会相互影响,比如n变量
3.如果方法中使用的是引用类型变量(比如数组,对象),就会共享该引用类型的数据。
4。递归必须向退出递归的条件逼近,否则就是无限递归,出现
StackOverflowError,死龟了:)
5.当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。

例:
①打印问题
打印问题虽然简单,但是初次接触到也很容易搞错,就算没错的也对它的调用执行机制模模糊糊说不上来。

public class Recursion01 {
 //编写一个 main 方法 
 public static void main(String[] args) {
  T t1 = new T();
   t1.test(4);    //输出什么? n=2 n=3 n=4 
   int res = t1.factorial(5);
    System.out.println("5 的阶乘 res =" + res)
    } 
    }
class T { 
 public void test(int n) {
  if (n > 2) {
   test(n - 1); 
   }
   System.out.println("n=" + n);
    }

在这里插入图片描述

②阶乘问题

//factorial 阶乘 
public int factorial(int n) {
 if (n == 1) {
  return 1; 
  } else { 
  return factorial(n - 1) * n;
   } 
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值