当前位置 : 主页 > 编程语言 > java >

递归最通俗的理解方法 利用递归算阶乘

来源:互联网 收集:自由互联 发布时间:2022-09-29
递归最好最全的理解方法 首先要划分好递归的三大要素,只要是递归,都要从三大要素入手 第一要素 :首先你要明确这个函数想要干什么 对于递归,我觉得很重要的一个事就是,这个

递归最好最全的理解方法

首先要划分好递归的三大要素,只要是递归,都要从三大要素入手

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

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

例如

//用递归算出阶乘
public static int f(int n) {}

这个函数的功能是算阶乘。那么,我们定义了一个函数,并且定义了它的功能是什么。接下来我们来看第二要素

第二要素:寻找递归的结束条件

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

例如,上面那个例子,当n = 1时,f(1)=1。再把第二要素加入代码中

public static int f(int n) {
if(n==1){
return 1;
}
}

第三要素:找出函数的等价关系式

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

例如f(n)这个范围比较大,我们可以让f(n)=n*f(n-1)。这样,范围就由n变成了n-1,范围变小了,并且为了原函数f(n)不变,我们需要让f(n-1)乘以n。

说白了,就是要找到原函数的一个等价关系式,f(n)的等价关系式为n*f(n-1)即

f(n) = n* f(n-1)。 第三要素是三要素中最难的一步,只要找到关系式离成功就不远了

那么将这个等价式写入函数里

public static int f(int n) {
if(n==1){
return 1;
}
return f(n-1) * n;
}

到此为止 递归的阶乘已经结束 可以在main方法中调用f方法来输出你想要的数

public class ResusionDemo1 {
public static void main(String[] args) {
System.out.println(f(3));
}
public static int f(int n) {
if (n == 1) {
return 1;
} else {
return f(n - 1) * n;
}

}
//当n等于3 那么输出结果就是6

递归最通俗的理解方法 利用递归算阶乘_递归

上一篇:InPutStream OutPutStream字节流
下一篇:没有了
网友评论