算法学习--printN

原创 2017年10月12日 11:04:13

最近跟着中国大学慕课http://www.icourse163.org/learn/ZJU-93001?tid=1002261004学习数据结构,完全是新手,索性记录一下学习的内容和做过的题,方便回顾和整理。
**问题:给出一个数N,打印这N个数,并统计时间。
两种方法:1、for 循环打印;2、递归打印**

package com.yanan.course1_1;

/**
 * 测试打印N个数的不同方法及不同方法之间的区别
 * Created by 张亚南 on 2017/10/12.
 */

/**
 * 模板方法
 */
abstract class Template1 {
    abstract void printN(int n);

    protected void spendTime(int n) {
        long start = System.currentTimeMillis();
        this.printN(n);
        long end = System.currentTimeMillis();
        System.out.println("消耗时间是:" + (end - start));
    }
}

class PrintN3 extends Template1 {

    @Override
    void printN(int n) {
        for (int i = 0; i < n; i++) {
//            System.out.println(i);
        }
    }
}

class Print4 extends Template1 {

    @Override
    void printN(int n) {
        if (n > 0) {
            printN(n - 1);
//            System.out.println(n);
        }
    }
}

public class TestPrintN1 {
    public static void main(String[] args) {
        int n = 10000;
        //int n = 100000;//StackOverFlow
        new Print4().spendTime(n);
        new PrintN3().spendTime(n);
    }
}

打印结果是两个程序执行时间都是0,因为执行速度太快了。
把N设为N=100000(扩大一个数量级),结果递归打印方法StackOverFlow,说明空间不够。
所以想办法改变模板方法,让printN方法多执行几次。

package com.yanan.course1_1;

/**
 * 测试打印N个数的不同方法及不同方法之间的区别
 * Created by 张亚南 on 2017/10/12.
 */

/**
 * 模板方法
 */
abstract class Template1 {
    abstract void printN(int n);

    protected void spendTime(int n) {
        long start = System.currentTimeMillis();
        //多循环几次方法,扩大执行时间
        for (int i = 0; i < 1000; i++) {
            this.printN(n);
        }
        long end = System.currentTimeMillis();
        System.out.println("消耗时间是:" + (end - start));
    }
}

class PrintN3 extends Template1 {

    @Override
    void printN(int n) {
        for (int i = 0; i < n; i++) {
//            System.out.println(i);
        }
    }
}

class PrintN4 extends Template1 {

    @Override
    void printN(int n) {
        if (n > 0) {
            printN(n - 1);
//            System.out.println(n);
        }
    }
}

public class TestPrintN1 {
    public static void main(String[] args) {
        int n = 10000;
        new PrintN4().spendTime(n);
        new PrintN3().spendTime(n);
    }
}

这次执行完时间分别是
PrintN3:2;//循环
PrintN4:21;//递归
可见for循环的输出速度比较快。
总结:解决问题的效率和时间和空间的利用效率有关。

版权声明:本文为博主原创文章,未经博主允许不得转载。

实现PrintN函数

1. 用循环实现PrintN函数: void PrintN(int N) { int i; for(int i = 1; i
  • u013354805
  • u013354805
  • 2016年03月11日 15:45
  • 1017

实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数.

实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数. #include using namespace std; void printn(int n); ...
  • w3071206219
  • w3071206219
  • 2016年08月23日 09:00
  • 2647

Java中print、printf、println的区别 详解

Java中print、printf、println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换...
  • zxman660
  • zxman660
  • 2012年07月20日 17:03
  • 25796

算法学习--printN

给出一个数N,打印这N个数,并统计时间。 两种方法:1、for 循环打印;2、递归打印package com.yanan.course1_1;/** * 测试打印N个数的不同方法及不同方法之间的...
  • wenshen1927
  • wenshen1927
  • 2017年10月12日 11:04
  • 238

打印流(自己编写print()方法)

需求:使用OutPutStream输出数据的时候,只能输出字节,但是如果要输出String类型或int类型或double类型的时候要使用.getBytes()方法或转换成字节数组进行输出。我们可以自己...
  • ikv1989
  • ikv1989
  • 2018年01月22日 22:21
  • 33

[数据结构] 基本概念 PrintN函数实现

PrintN函数实现 循环实现 递归实现 编译过程中出现的问题 参考资料PrintN函数实现实现一个函数PrintN,使得传入一个正整数N的参数后,能顺序打印从1到N的全部正整数。 途径1:通过循环实...
  • qq_37339217
  • qq_37339217
  • 2017年09月20日 00:36
  • 285

判别学习算法和生成学习算法

http://blog.csdn.net/xiahouzuoxin/article/details/45223519
  • lingzhiwangcn
  • lingzhiwangcn
  • 2016年10月14日 16:56
  • 940

4-1 简单输出整数 (10分)

本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数。 函数接口定义: void PrintN ( int N ); 其中N是用户传入的参数。该函数必须将从1到N的全部正整数顺...
  • NOKIA_LC
  • NOKIA_LC
  • 2015年10月13日 17:24
  • 2324

本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数。

本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数。 函数接口定义: void PrintN ( int N ); 其中N是用户传入的参数。该函数必须将从1到N的全部正整...
  • cw397265362
  • cw397265362
  • 2017年09月01日 10:32
  • 1751

关于算法学习的总结和感悟(原创)

时隔一年重读《算法导论》,去年读到了二叉查找树就搁浅了,今年从头捡起,希望能走的 更远一些。算上大学时的数据结构与算法课,今年可以算是第三波学习攻势了。随着学习的深入, 对算法的学习渐渐有了些自己...
  • dc_726
  • dc_726
  • 2012年03月26日 22:43
  • 7171
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法学习--printN
举报原因:
原因补充:

(最多只允许输入30个字)