你要实在不好理解,可以把依次调用的Bind想像是Bind1,Bind2...BindN,它们的实现都与Bind完全一样 调用的顺序是从Bind -> BindN 执行完的顺序则刚好相反
调用自身,直到money==1时,最内层N的调用返回1(弹至上一层),累加,然后又弹至上一层的上一层,累加...直到弹出最上层(第一次调用Bind),累加,然后return,整个结束
按照你写的累计:1+3+6=10,最后值 = 1, +返回值3 +返回值6,你可自己测试和跟踪,看是否如你所想。
[quote=引用 3 楼 vb763305825 的回复:] 当money不等于1时调用自身
什么时候累加很好办跟踪就可以看到了,如输入6那么,6/2=3,3/2=1跳出,开始累加。 除非你这样写: private static int Bind(int money) { if (money == 1) return 1; else return Bind(money / 2 + money); } 那计算结果是不同的
[quote=引用 13 楼 fate1987 的回复:] [quote=引用 12 楼 lifeilin6671 的回复:] [quote=引用 1 楼 fate1987 的回复:] 我自己无意中写出来,得到了一道题的结果,但是我不知道它里面到底是怎么样算的,没加后面的MONEY我知道,如果在加Bind(money / 2) + Bind(money)这样会报错,请大神指导一下!
[quote=引用 12 楼 lifeilin6671 的回复:] [quote=引用 1 楼 fate1987 的回复:] 我自己无意中写出来,得到了一道题的结果,但是我不知道它里面到底是怎么样算的,没加后面的MONEY我知道,如果在加Bind(money / 2) + Bind(money)这样会报错,请大神指导一下!
[quote=引用 1 楼 fate1987 的回复:] 我自己无意中写出来,得到了一道题的结果,但是我不知道它里面到底是怎么样算的,没加后面的MONEY我知道,如果在加Bind(money / 2) + Bind(money)这样会报错,请大神指导一下!
111,093
社区成员
642,554
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧