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个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
作者分享
练习即生产
1
边界自校验、失败域统一、映射显式化
3
"值传递"只是一个术语,一个代号,有欺骗性,有二义性,这个术语的具体意思看括号里的表达
3
【递归计数器:-597,265,727】 fib(50) = -298,632,863
1
🚩Java
D16
1、联接自己的项目来练习写代码,效果好像好一点
2、把看视频、看书的知识落地,看的简单,做起来有点难,做完了,好像也就是那么一回事
3、没有学习新知识,通过练习写健壮的企业级的小代码,深度有了一点感觉。80%时间做非核心的80%工作,写核心的13行代码只能拿基本工资,写200行非核心的代码再拿剩下的部分
4、学习了正则表达式、String、StringBuilder、StringBuffer、格式化输出、Matcher、Pattern
3
