首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >递归中的前缀不能正常工作。

递归中的前缀不能正常工作。
EN

Stack Overflow用户
提问于 2017-03-30 20:11:57
回答 2查看 59关注 0票数 0

这是我的密码:

代码语言:javascript
运行
复制
class Backwards {
    String str;
    Backwards(String s) {
        str = s;
    }

    void backward(int idx) {
        if(idx != str.length()-1) {
            System.out.println(idx);
            backward(++idx);
        }
        System.out.print(str.charAt(idx));
    }
}

class StrBackDemo {
    public static void main(String args[]) {
        Backwards s = new Backwards("This is a test");
        s.backward(0);
    }
}

当我用表达式idx +1调用函数本身时,它工作得很好,但是对于++idx,它会打印两次第一个字符,并且根本不打印最后一个字符。

代码语言:javascript
运行
复制
With <+idx> output: ttset a si sih
With <idx +1> output: tset a si sihT
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-30 20:31:06

++i将增加i的值,然后返回递增的值。

代码语言:javascript
运行
复制
 i = 1;
 j = ++i;
 (i is 2, j is 2)

i++将增加i的值,但返回在增量之前持有的原始值。

代码语言:javascript
运行
复制
 i = 1;
 j = i++;
 (i is 2, j is 1)

因此,在您的代码局外人中,idx =0;

代码语言:javascript
运行
复制
System.out.println(idx); //idx = 0;
            backward(++idx); //its changed idx = 1 and passed 1 to this function
 System.out.print(str.charAt(idx));//After all recursion call here idx =1 not idx =0; 

因此,你得到了错误的结果。

但在idx+1的情况下;

代码语言:javascript
运行
复制
System.out.println(idx); //idx = 0;
                backward(idx+1); //its changed idx = 0 but passed 1 to this function
     System.out.print(str.charAt(idx));//After all recursion call here idx =0  
票数 2
EN

Stack Overflow用户

发布于 2017-03-30 20:36:17

这是在递归调用backward(++idx)上传递增量值和增量值本身的原因。运算符++idx的值设置为idx + 1

最后一次调用结束时,方法获取索引13并打印它的字符,而前面的调用也有索引13。同时,方法的第一次调用有索引1。

要修复您的代码,请使用:

代码语言:javascript
运行
复制
    void backward(int idx) {
        if(idx != str.length()-1) {
            System.out.println(idx);
            backward(idx + 1);
        }
        System.out.print(str.charAt(idx));
    }

使用idx + 1时,idx的值将保持不变,即调用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43127487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档