Java 从左到右求参数:拼接 sb 的时候,factorial 还没被调用

/**
复制代码
* 递归实现阶乘fact(5)和斐波那契fib(10),并打印调用过程理解递归展开 * 5! = 5 * 4 * 3 * 2 * 1 * 递归调用 * 过程打印 * Java 从左到右求参数:拼接 sb 的时候,factorial 还没被调用——那时的 sb 是空的!等 factorial 跑完把 sb 填满了,字符串早就拼好了。 * 所以要使用result接收,在System.out.println中调用递归的话,sb会显示不全面 * static变量,main方法中的变量,普通方法中的变量,它们的作用域 * */ public class Day25RecursionTest { static int count = 0; public static void main(String[] args) { StringBuilder sb = new StringBuilder(); int n = 5; int result = factorial(n, sb); System.out.println("------------------------------递归实现阶乘------------------------------"); System.out.println( "【递归计数器:" + count + "】 " + n + "! = " + sb + " = " + result); } public static int factorial(int n, StringBuilder sb) { ++count; sb.append(n); if (n == 1) { return 1; } sb.append(" * "); return n * factorial(n - 1, sb); } }
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
鱼友0258
下载 APP