Java方法递归(含详解) 您所在的位置:网站首页 递归系统模型分析方法好学嘛 Java方法递归(含详解)

Java方法递归(含详解)

2024-07-10 07:19| 来源: 网络整理| 查看: 265

方法递归

递归很熟悉了,我们再来谈谈递归。

定义: 一个方法在执行过程中调用自身, 就称为 “递归”.

递归,相当于数学上的 “数学归纳法”, 有一个起始条件, 然后有一个递推公式. 例如, 我们求 N! 起始条件: N = 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件.

递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! => N * (N-1)

举例:

1.递归求 N 的阶乘 class FactorialSum{ public int factorialsum(int x){ if(x==1){ return 1; } return x*factorialsum(x-1); } }

这里分析一下这个吧:

class FactorialSum{ public int factorialsum(int x){ System.out.println("函数开始, x = " + x); if(x==1){ return 1; } int ret=x*factorialsum(x-1); System.out.println("函数结束, x = " + x + " ret = " + ret); return ret; } }

运行结果: 在这里插入图片描述在这里插入图片描述如图:一层一层的深入,直到x值等于1,return ret的值就为1, 返回上一层,ret=21,返回ret=2; 返回上一层,ret=32,返回ret=6; 返回上一层,ret=46,返回ret=24; 返回最后一层,ret=524,返回ret=120;

2.递归求 1 + 2 + 3 + … + 10 class SequenceSum{ public int sequencesum(int x){ if(x==1){ return 1; } return x+sequencesum(x-1); } }

这样理解,终止条件为 1,如果到1了就返回上一层,那么; 10 !=1 进入10+sequencesum(9); 9 !=1 进入9+sequencesum(8); . . . 1==1 返回上一层,并且sequensum(1)=1 (ps:最深层次); 开始返回上一层 1+2=3 返回上一层 ,并且sequensum(2)=3 . . . 10+sequencesum(9)=10+45=55 返回 55

3.按顺序打印一个数字的每一位 class SequencePrint{ public void sequenceprint(int x){ if(x>9){ sequenceprint(x/10); } System.out.println(x%10); } }

这里我输入的是1234; 1234>9 进入sequence(1234/10)=sequence(123); 123>9 进入sequence(123/10)=sequence(12); 12>9 进入sequence(12/10)=sequence(1); 110 return 3+sequencenumsum(12); 12>10 return 2+sequencenumsum(1); 1



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有