学校网站建设存在的问题,餐饮网站模板免费下载,wordpress to ghost,淘宝关键词优化技巧教程递归算法
什么是递归算法
在过程或者函数里调用自身的算法#xff1b;
递归算法#xff08;recursion algorithm#xff09;#xff0c;通过重复将问题分解为同类的子问题而解决问题的方法#xff0c;
Java中函数可以通过调用自身来进行递归#xff0c;大多数编程语句…递归算法
什么是递归算法
在过程或者函数里调用自身的算法
递归算法recursion algorithm通过重复将问题分解为同类的子问题而解决问题的方法
Java中函数可以通过调用自身来进行递归大多数编程语句皆是如此
递归的作用可以完全取代循环。
递归阶乘
package com.sin.demo.recursive;/*** author sin* date 2022/11/2* apiNote*/
public class RecursiveDemo {public static void main(String[] args) {int a factorialTest(5);System.out.println(a);}/*** 递归阶乘* param a 阶乘参数* return*/public static int factorialTest(int a) {if (a 0)return 1;elsereturn a * factorialTest(a - 1);}}结果 循环阶乘
public static void main(String[] args) {int a factorialTest1(5);System.out.println(a);}/*** 循环阶乘* param a 阶乘数* return*/public static int factorialTest1(int a){int sum 1;for (int i 1 ;ia;i)sum *i;return sum;}结果 分析递归
通过栈角度来理解递归方法的调用过程
栈后进先出先进后出原则
第一步
在 factorialTest方法第一次被调用的时候参数 a 为 5走else代码块执行 a * factorialTest(a - 1)相当于a * factorialTest(3)时栈的状态 第二步
返回值存储器时没有返回值的在调用factorialTest4后栈的状态 第三步
返回值存储器时没有返回值的在调用factorialTest3后栈的状态 第四步
返回值存储器时没有返回值的在调用factorialTest2后栈的状态 第五步
返回值存储器时没有返回值的在调用factorialTest1后栈的状态 第六步
返回值存储器时没有返回值的在调用factorialTest0后栈的状态 最后符合符合if条件有返回值
栈的后进先出原则进行阶乘 递归代码虽然只用一份单执行的过程中每调用一次就会入栈一次生成不同的参数局部变量即返回地址