Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将for循环转换为递归算法?_Java_Loops_Recursion - Fatal编程技术网

Java 如何将for循环转换为递归算法?

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

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

公共字符串二进制(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循环。不是真的,有一种方法。好吧,那是什么?我保证找到它时告诉你。好的,我会的。