递归方法:输入一个多位整数,计算出从0到该数1出现的个数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package com.company.Tt; import java.util.Scanner; public class T4 { public static void main(String[] args) { Scanner cs = new Scanner(System.in); System.out.println( "请输入一个多位整数来计算出0到该数的1出现的个数......" ); int n = cs.nextInt(); //要求操作者输入一个正整数 T4 t = new T4(); //声明一个T4类的对象 t.finds2(n); //调用方法2 System.out.println( "0到" +n+ "之间出现1的个数为:" +t.n1+ "个" ); //打印方法2的结果 } public int n1 = 0 ; //定义一个成员变量计数器n1 public void finds2( int n2){ // 方法2递归 if (n2 == 1 ){ //如果测试数为1计数器加1 this .n1 += 1 ; } else { f(n2); //检测各位的数值是否为1 finds2(n2- 1 ); //自身调用 } } public void f( int a){ //对多位检测是否为1 if (a>= 10 ){ //检测该数是否已经为单位数了,如果为多位数则进行求余检测 if (a% 10 == 1 ){ //检测各位 this .n1 += 1 ; } //在此减一位递归 f(a /= 10 ); //递减一位 } else { //检测该数如果为单位数是,对该单位数进行检测 if (a == 1 ){ this .n1 += 1 ; } } } } |
自我感觉用for循环比较爽,这纯属娱乐一下。。。。
图解:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步