引言: 1. 给定一个整数,依次打印其没每位上的数字
想法: 1. 把数字转为String,再转为char,最后放入char[],逐个打印 2. 递归
代码:
package com.anteoy.dataStructuresAndAlgorithm.javav2; /** * Created by zhoudazhuang on 17-2-16. * Description: */ public class PrintString { public static void main(String [] args) { printStrs(123456789); printByte(123456); printString(123456); } /** * 逐个字符打印所给整数 * @param n 这里系统标准输出流每次都只打印一个字符 */ private static void printStrs(int n) { //递归临界条件 if(n>=10){ //前递归顺序执行 printStrs(n/10); } //后递归执行(反前递归顺序) System.out.println(n%10); } private static void printByte(int n){ //转为String String s = String.valueOf(n); byte[] bytes = s.getBytes(); for (byte b: bytes) { System.out.println(String.valueOf(b)); } } private static void printString(int n){ //转为String String s = String.valueOf(n); //转为char[] char[] chars = new char[s.length()]; s.getChars(0,s.length(),chars,0); //for each输出 for (char b: chars) { System.out.println(String.valueOf(b)); } } }
后记:
这里主要注意,递归的前递归,递归临界条件,后后递归。比如这里的System.out.println(n%10)语句是达到临界后的后递归,执行顺序和临界前的前递归顺序是相反的,就像爬山一样,一层一层爬上去,而下山的时候,走下山的梯子和上去的是反方向的。