| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 433 人关注过本帖
标题:这道题用递归该怎样写呢?, 求指教!
只看楼主 加入收藏
i_code
Rank: 2
等 级:论坛游民
帖 子:19
专家分:15
注 册:2013-5-2
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:3 
这道题用递归该怎样写呢?, 求指教!
打印菱形, 用户输入n(当然n为奇数),打印n阶菱形;
例如:n = 5时, 打印的图形如下:
  *
 ***
*****
 ***
  *

程序代码:
//打印菱形

import java.util.*;

public class LingXing {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int level = s.nextInt();
        
        print(level);
            
    }    
    
    public static void print(int level) {
        int t = (level + 1) / 2;
        int i, j;
        
        for(i = 1; i<=t; i++) { //打印上半部分
            for(j = 1; j<=t-i; j++) {
                System.out.print(" ");    
            }    
            
            for(j = 1; j<=2*i-1; j++) {
                System.out.print("*");    
            }
            
            System.out.println();
        }    
        
        for(i = 1; i<t; i++) { //打印下半部分
            for(j = 1; j<=i; j++) {
                System.out.print(" ");    
            }    
            
            for(j = (t-i)*2-1; j>=1; j--) {
                System.out.print("*");    
            }
            
            System.out.println();
        }
    }
}


这是我的代码, 现在想用递归实现, 应该怎样写啊?
搜索更多相关主题的帖子: 用户 
2014-04-11 16:41
i_code
Rank: 2
等 级:论坛游民
帖 子:19
专家分:15
注 册:2013-5-2
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 i_code 于 2014-4-11 16:50 编辑 ]
2014-04-11 16:43
xl881221
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:30
专家分:177
注 册:2014-3-23
收藏
得分:10 
import java.util.*;
public class Print{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
                int sc = s.nextInt();
        printUp(sc,sc);
        printDown(sc-2,sc);
    }
    static void printUp(int n,int N){

        if(n==1){
            for(int i=1;i<=(N-n)/2;i++){
                System.out.print(" ");
            }
            System.out.println("*");
        }else{
            int m=n;
            printUp(m-2,N);
            for(int i=1;i<=(N-n)/2;i++){
                System.out.print(" ");
            }
            for(int i=1;i<n;i++){
                System.out.print("*");
            }
            System.out.println("*");
        }
    }
    static void printDown(int n,int N){
        if(n==1){
            for(int i=1;i<=(N-n)/2;i++){
                System.out.print(" ");
            }
            System.out.print("*");
        }
        else{
            for(int i=1;i<=(N-n)/2;i++){
                System.out.print(" ");
            }
            for(int i=1;i<n;i++){
                System.out.print("*");
            }
            System.out.println("*");
            printDown(n-2,N);
        }
    }
}
2014-04-16 15:57
xl881221
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:30
专家分:177
注 册:2014-3-23
收藏
得分:0 
又想的一种方法不是用递归的
import java.util.*;
public class PrintAdvance{
        public static void main(String[] args){
            Scanner s = new Scanner(System.in);
                    int sc = s.nextInt();
            SpaceNumber sn=new SpaceNumber(sc);
        print(sn,sc);
        }
        static void print(SpaceNumber sn,int N){
        do{
            for(int i=1;i<=sn.spacenumber;i++){
                System.out.print(" ");
            }
            for(int i=1;i<N-2*sn.spacenumber;i++){
                System.out.print("*");
            }
            System.out.println("*");
            sn.activeOnce();
        }while(sn.flag>=1);
    }      
}
class SpaceNumber{
    SpaceNumber(int n){
        spacenumber=(n-1)/2;
        i=(n-1)/2;
        flag=n;
    }
    int spacenumber,flag;
    private int i;
    void activeOnce(){
        spacenumber=Math.abs(i-1);
        i--;
        flag--;
    }
}
2014-04-20 00:03
快速回复:这道题用递归该怎样写呢?, 求指教!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.117453 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved