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
Java 如何使用递归方法打印a到z_Java_Loops_For Loop_Recursion_Alphabet - Fatal编程技术网

Java 如何使用递归方法打印a到z

Java 如何使用递归方法打印a到z,java,loops,for-loop,recursion,alphabet,Java,Loops,For Loop,Recursion,Alphabet,您好,这里是java新手,我需要打印字母表,从a到z,从z到a的顺序相反。我需要使用递归方法来实现这一点 class Alphabets{ public static void main(String args[]){ char ch; for( ch = 'a' ; ch <= 'z' ; ch++ ) System.out.print(ch); System.out.println(); for( ch = 'z' ; ch >= 'a' ; ch--

您好,这里是java新手,我需要打印字母表,从a到z,从z到a的顺序相反。我需要使用递归方法来实现这一点

class Alphabets{


public static void main(String args[]){
  char ch;
  for( ch = 'a' ; ch <= 'z' ; ch++ )
    System.out.print(ch);
  System.out.println();
  for( ch = 'z' ; ch >= 'a' ; ch--)
     System.out.print(ch);

  if (ch <= 'a') ch = ch--;
    else if(ch >='a') ch = ch++;
    System.out.print(ch);

 }
}
类字母表{
公共静态void main(字符串参数[]){
char ch;
for(ch='a';ch='a';ch--)
系统输出打印(ch);
如果(ch='a')ch=ch++;
系统输出打印(ch);
}
}
我的两个for循环的输出似乎工作得很好,但我完全不懂递归方法

public static void printCharRecur(char ch) {
 if(ch=='z') System.out.print("z z");
 else {
  System.out.print(ch);
  printCharRecur((char) (ch+1));
  System.out.print(ch);
 }
}

从main调用
printCharRecur('a')
向前打印字母表:打印字母表的第一个字符,然后打印不带第一个字符的字母表

要反向打印,只需颠倒这两种方法的顺序:打印不带第一个字符的字母表,然后打印第一个字符。

方法如下:

public static void main(String[] args) {
    recursiveAlphabet('a');
    recursiveAlphabetReverse('z');
}

public static void recursiveAlphabet(char current) {
    System.out.println(current);
    if (current != 'z') {
        recursiveAlphabet((char) (current + 1));
    }
}

public static void recursiveAlphabetReverse(char current) {
    System.out.println(current);
    if (current != 'a') {
        recursiveAlphabetReverse((char) (current - 1));
    }
}
如果需要,可以在一个方法中同时使用这两种方法,如下所示:

public static void main(String[] args) {
    resursiveBothSide('a', true);
}

public static void resursiveBothSide(char current, boolean forward) {
    System.out.println(current);
    if ((current == 'z') && (forward)) {
        forward = false;
    }
    if (forward) {
        resursiveBothSide((char) (current + 1), forward);
    } else {
        if (current != 'a') {
            resursiveBothSide((char) (current - 1), forward);
        }
    }
}

执行以下简单操作,只需删除您的if条件:-

char ch;
          for( ch = 'a' ; ch <= 'z' ; ch++ )
            System.out.print(ch);
          System.out.println();
          for( ch = 'z' ; ch >= 'a' ; ch--)
             System.out.print(ch);
charch;
for(ch='a';ch='a';ch--)
系统输出打印(ch);

这里使用简单、单一的方法,没有
-

void printrec(char c) {
    if (c > 'z') return;
    System.out.print(c);
    printrec((char) (c+1));
    System.out.print(c);
}

在你的代码中没有看到任何递归被使用?你试过什么?“我对两个for循环的输出似乎工作得很好,但我完全不懂递归方法”我的意思是OP想知道如何递归地做。但是递归方法在哪里?实际上这是他问的问题(“我完全不懂递归方法”)。