解析java中的方法的递归

解析java中的方法的递归

1.含义

自己调用自己

2.为什么要用?

用于有规律(数字之前)的数据的计算,例如求斐波那契数列

3.如何使用方法的递归

3.1 思路

a.先分析出所求题目的递归规律

a.1 具体就是先把数字的计算方法列出来

a.2 观察前后数据的变化(从前往后看,从后往前看)是否符合递归

a.3 后面得到的单个数据不符合递归规律,那么它就是递归的出口

b.根据递归公式进行return调用自身

c.设立递归出口,当到某个条件的时候,会返回一个具体的值,而不是再次去调用自身

3.2 使用原则

a.能用循环解决的问题就不要用递归,实在是其他办法实现不了再去使用递归

b.递归不要太深,因为调用方法的过程就是一个压栈的过程,栈的空间是有上限的,

一直压栈而不弹栈的话,那可能会递归到栈内存满了,然后提示StackOverflowError堆栈溢出异常

c.递归一定要有出口,不能无限调用,return关键字之结束方法在此无效

因为return关键字执行结束方法的功能都是在被void修饰的方法中,其余的有返回值的方法,均不可以使用return;来结束方法

3.3 示例题目

题目内容

求1+2+…+n之间的和

分析

f(4)=4+3+2+1

f(3)=3+2+1

f(2)=2+1

f(1)=1;

由上面的式子,我们不难发现:f(n)=n+f(n-1)(n>2时,f(1)=1)

因此.此题的递归规律为f(n)=n+f(n-1)(n>2时)

递归出口为n=1的情况,此时返回1即可

示例代码

import java.util.Scanner;

public class Practice {
          
   
    public static void main(String[] args) {
          
   
       Scanner scanner=new Scanner(System.in);
        System.out.println("请输入n的值");
        int n=scanner.nextInt();
        int result=sum(n);
        //进行输出格式的打印
        for (int i = 1; i <=n; i++) {
          
   
            if(i==n){
          
   
                System.out.print(i+"=");
                //加到最后一个数时,后面的符号是等号
            }else{
          
   
                System.out.print(i+"+");
            }
        }
        System.out.print(result);
    }
    public static int sum(int n){
          
   
      //递归的出口
      if(n==1){
          
   
          return 1;
      }
      //递归公式
      return n+sum(n-1);
    }
}

示例代码运行截图

经验分享 程序员 微信小程序 职场和发展