递归使用案例:输出对称图形

来源:互联网 发布:一维数组定义 编辑:程序博客网 时间:2024/06/09 23:53

要求:在控制台下输出如下图形

       1
     121
  12321
1234321


       1
     121
  12321
1234321
  12321
    121
      1


两个图形都是对称的,所以用递归很容易实现,下面贴出代码:

Demotest:

import java.util.Scanner;public class Demotest{public static int i = 1;public static void Returnnum(int num,int up ){if(num == 1){System.out.print(up);return ;}else if(num == 0){System.out.print(num);return ;}else{System.out.print(up);Returnnum(num - 1,up + 1);System.out.print(up);}return ;}public static void main(String[] args){System.out.print("输入一个数字2-9之间:"); int row = new Scanner(System.in).nextInt();for (int i = 0; i < row; i++){for (int k = 0; k < row-i-1; k++){System.out.print(" ");}Returnnum(i+1,1);System.out.println();}}}

Demotest3:

import java.util.Scanner;public class Demotest3{public static int i = 1;public static void Returnnum(int num,int up ){if(num == 1){System.out.print(up);return ;}else if(num == 0){return ;}else{System.out.print(up);Returnnum(num - 1,up + 1);System.out.print(up);}return ;}public static void run(int num,int up){if(num == 0){return ; }else{for(int i = 0; i< num;i++){System.out.print(" ");}Returnnum(up,1);System.out.println();run(num - 1,up + 1);for(int i = 0; i< num+1 ;i++){System.out.print(" ");}Returnnum(up-1,1);System.out.println();}}public static void main(String[] args){System.out.print("输入一个最大的数(3到9之间)表示菱形:");int  num = new Scanner(System.in).nextInt(); run(num,1);}}

在Demotest中定义了一个类方法Returnnum(),它的作用是输出一段回文数,它的第一个参数是回文数的最大数值,第二个参数代表是从数值几开始(一般为1),例如执行函数Returnnum(5,1),它将会输出123454321,Returnnum函数的作用仅仅如此。


在Demotest3中,run()函数的作用是输出菱形,它调用了我们刚刚写的Returnnum函数,因为菱形上下部分的结构上对称的用递归加上我们刚刚实现的函数可以轻松实现输出菱形。

0 0
原创粉丝点击