Java 如何将for循环转换为递归算法?
这是我的代码,它从字符串s(abc)生成给定长度(n)内的任何可能排列:Java 如何将for循环转换为递归算法?,java,loops,recursion,Java,Loops,Recursion,这是我的代码,它从字符串s(abc)生成给定长度(n)内的任何可能排列: 公共字符串二进制(int n,String str,int i){ 字符串s=“abcdefghijklmnopqrstuvxyz”; //i=s.长度(); 如果(n==0){ 系统输出打印项次(str); 返回str; } 如果(i==s.length()){ 系统输出打印项次(str); 返回“”; } 对于(i=0;i
公共字符串二进制(int n,String str,int i){
字符串s=“abcdefghijklmnopqrstuvxyz”;
//i=s.长度();
如果(n==0){
系统输出打印项次(str);
返回str;
}
如果(i==s.length()){
系统输出打印项次(str);
返回“”;
}
对于(i=0;i<26;i++){
二元(n-1,str+s.charAt(i),i);
}
返回“”;
}
我的问题是:如何将for
循环转换为递归算法?我不允许在这个家庭作业任务中使用任何循环。您可以通过实际使用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
输出
binary(2, "", 0);
aa
ab
ac
...
az
ba
bb
...
zy
zz
你必须使用for循环。不是真的,有一种方法。好吧,那是什么?我保证找到它时告诉你。好的,我会的。