2021-07-26 10:29

递归

Lin丶

其它

(805)

(0)

收藏

今天,我们来谈谈递归。

首先:明确你这个函数想要干什么

对于递归,我觉得很重要的一个事就是,这个函数的功能是什么,他要完成什么样的一件事,而这个,是完全由你自己来定义的。也就是说,我们先不管函数里面的代码什么,而是要先明白,你这个函数是要用来干什么。

接下来:寻找递归结束条件

所谓递归,就是会在函数内部代码中,调用这个函数本身,所以,我们必须要找出递归的结束条件,不然的话,会一直调用自己,进入无底洞。也就是说,我们需要找出当参数为啥时,递归结束,之后直接把结果返回,请注意,这个时候我们必须能根据这个参数的值,能够直接知道函数的结果是什么。

最后:找出函数的等价关系式

我们要不断缩小参数的范围,缩小之后,我们可以通过一些辅助的变量或者操作,使原函数的结果不变。

下面写一个经典的递归(汉诺塔):

public void hanNuoTa(int n,char x,char y,char z)//四个参数分别为n=盘子的数量,x=第一个塔,y=第二个塔,c=第三个塔。
               {
       if(n==1)//盘子的数量等于1就会执行这句代码。
{
System.out.println(n+":"+x+"-->"+z);
}
else
{
hanNuoTa(n-1,x,z,y);//将n-1放入y塔,参数是时刻在变的,如果盘子数量为3,第一次参数变成2 x z y,第二次参数变成1 x z y。
System.out.println(n+":"+x+"-->"+z);
hanNuoTa(n-1,y,x,z);//将n-1放入z塔,第一次参数变成2 y z x,第二次参数变成1 y z x。
}
}


0条评论

点击登录参与评论