0

嗨,这里是 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);

 }
}

我的两个 for 循环的输出似乎工作得很好,但我完全迷失在递归方法上。

4

5 回答 5

1

这是如何做到的:

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);
        }
    }
}
于 2013-10-24T06:49:29.290 回答
0

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

void printrec(char c) {
    if (c > 'z') return;
    System.out.print(c);
    printrec((char) (c+1));
    System.out.print(c);
}
于 2013-10-24T07:07:10.250 回答
0
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);
 }
}

printCharRecur('a')从主呼叫

于 2013-10-24T06:45:19.087 回答
0

要正向打印字母:打印字母的第一个字符,然后打印没有第一个字符的字母。

要反向打印,只需颠倒这两者的顺序:打印没有第一个字符的字母,然后打印第一个字符。

于 2013-10-24T06:47:15.800 回答
0

简单地执行以下操作,只需删除您的 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);
于 2013-10-24T06:52:46.480 回答