当前位置:首页>综合>正文

关于java中的递归 java递归算法,怎么理解

2023-04-21 18:28:47 互联网 未知 综合

 关于java中的递归 java递归算法,怎么理解

关于java中的递归

hi(n 1)
System.out.println("你好" n)
这两句调换一下,就不会反了。
因为最后一个递归调用最先返回,而第一次打印就是在这个返回之后调用的。

执行过程:
main->hi(1)->hi(2)->hi(3)...hi(20)。
hi(19): hi(20)返回, print(19). 返回
hi(18): hi(19)返回, print(18). 返回
...
hi(1):hi(2)返回,print(1).返回
main: 下一句,退出.

递归只重复函数的内容。
如果是非引用型参数,其值在递归返回后不会受影响。这个跟普通的函数调用没有区别。
但是,递归需要注意两个基本问题:
1) 必须要有终止条件。
2) 递归层次不能太深,否则可能引起调用栈溢出,导致程序崩溃。

java递归算法,怎么理解???

import java.util.Scanner

public class JieCheng {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        System.out.println("请输入你想玩的数字。比如5,就是1! 2! 3! 4! 5!。意思是1的阶乘 2的阶乘...以此类推,也就是你输入的数字阶乘的总和")
        
        int num = 0
        Scanner reader = new Scanner(System.in)
        //这里没对输入字母做处理,你输入非数字必定报错,需要字母处理你自己用try{}catch{}块捕抓异常处理
        num = reader.nextInt()
        
        int result = 0
        
        for(int i=1i<=numi ){
            int sum = new JieCheng().getResult(i)
            
            result =sum
        }
        
        System.out.println(result)
        System.out.println("程序结束")
        
    }
    
    //递归求阶乘,看不懂的去楼顶唱歌
    public int getResult(int num){
        
        if(num==1){
            return 1
        }else{
            return getResult(num-1)*num
        }
        
        
    }
    

}

java中递归的作用是什么?为什么要用到递归?

你的两个问题其实是一个问题,对吧。
递归的作用:递归算法可以解决一些通过递归定义的题目。
首先需要明白什么是递归定义的题目,通俗一点来说就是一个大问题中蕴含着小问题,而小问题同时又与大问题的结构相同,只是规模更小。
比如n阶乘的定义可以理解为:
n!= n*(n-1)!
从上面不难看出 (n-1)! 就是比n! 规模更小的问题,按照此方法不断分解下去,就能得到最初的一些基本的已知的数据。然后反过来就可以求出最终的结果了。
n的阶乘算法如下:
private static int jieCheng(int n) {
if(n == 1)
return 1
else {
return n*jieCheng(n-1)
}
}
还有就是数据结构中二叉树的定义,也是递归定义的。因此二叉树的好多操作都是通过递归实现的。
用递归会使程序相当简洁。

java里递归和迭代分别是什么算法啊

迭代是普通的循环。
例:求从1加到10
int sum=0
for(int i=0i<= 10i ){
sum=sum i
}

递归是指一个函数直接或间接调用自己。
好比:从前有个庙庙里有个大和尚和小和尚,大和尚叫小和尚讲故事,小和尚说从前有个庙庙里有个大和尚和小和尚,小和尚叫大和尚讲故事,大和尚说从前....

递归的特点:
必有三个条件:
1. 间接或直接调用自己。
2. 一定要有退出的条件(比方说大和尚口干了不听故事了)。否则就是死循环
3。要有逻辑体(想要做的事)

public int sum(int x){
if(x<=0){
return x
}
return x sum(x-1)
}
int s=10
int total=sum(s)

该例中,sum函数总是调用自己,return x sum(x-1)
sum有退出条件, x<=0

最后的结果是把 10 9 8 7 ... 1 返回

在很多种情况下,迭代和递归都可以完成相同的功能, 不过递归有些功能迭代就完成不了。 并且代码没有递归简洁,熟练使用递归后能提高代码质量。

随便看看