【问题标题】:How can I convert my for loop into a recursive algorithm?如何将我的 for 循环转换为递归算法?
【发布时间】:2016-10-12 23:32:08
【问题描述】:

这是我的代码,它在给定长度 (n) 中从字符串 s(abc)生成任何可能的排列:

public String binary(int n, String str, int i) {
    String s = "abcdefghijklmnopqrstuvwxyz";
    //i=s.length();
    if (n == 0) {
        System.out.println(str);
        return str;
    }
    if (i == s.length()) {
        System.out.println(str);
        return "";
    }

    for (i = 0; i < 26; i++) {
        binary(n - 1, str + s.charAt(i), i);
    }

    return "";
}

我的问题是:如何将我的for 循环转换为递归算法?我不允许在这个作业任务中使用任何循环。

【问题讨论】:

  • 您必须使用 for 循环。
  • 不是真的,有办法。
  • 好吧,那是什么?
  • 我保证在我找到它的时候告诉我。
  • 好的,我会tell

标签: java loops recursion


【解决方案1】:

您实际上是通过使用 i 参数来实现的。

private static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
public static void binary(int n, String str, int i) {
    if (i == ALPHABET.length())
        return;
    if (n == 0) {
        System.out.println(str);
        return;
    }
    binary(n - 1, str + ALPHABET.charAt(i), 0); // next letter starts at beginning of alphabet
    binary(n, str, i + 1); // do it again using next letter of alphabet
}

测试

binary(2, "", 0);

输出

aa
ab
ac
...
az
ba
bb
...
zy
zz

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 2019-04-14
    • 2013-05-31
    • 2013-07-20
    • 2019-05-30
    相关资源
    最近更新 更多