有两处错误
1、(RS - i)和0比较是三种情况,不是两种。
你的代码会导致(RS - i) < 0这种无解的情况下,也会执行BZ = BZ + 1,这样解的总数BZ是错的。(但这个题里正好没有错)
2、得到一个解后将J复位到1,是错的。
如果当前递归层数是n,那么当前一定是第n跳。
但是如果此时n并不是1,那么强行将J置为1,就会把第n跳(或者第x跳)的台阶数记录到第1跳里,是错的。
可以看一下我提供的代码,传给jump(int step)的参数step就是表示当前是第几跳,同时也对应着递归的层数。
这个step就是你的那个J变量,也就是7楼说的栈顶索引,是不能随便复位的。换句话说,J最好通过参数传递(这样天生就是栈顶索引),而不是用全局变量。
【 在 sqsl 的大作中提到: 】
: 我第2个函数几乎就是第1个翻版,只是调用一个数组存每一次跳了多少步。但是因为函
: 数迭代的结构,不是所有跳法都能记录齐全
: 我就是在学编程,遇到困难想解决
: ...................
--
修改:z16166 FROM 221.218.160.*
FROM 221.218.160.*