A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 夜写意 中级黑马   /  2015-7-20 22:28  /  401 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. * 需求:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
  3. *                 例如2+22+222+2222+22222(此时共有5个数相加),
  4. *                 几个数相加有键盘控制。
  5. * 思路:可以看出第n个数是n位数,每一位为a
  6. *                 第n个数为第n-1个数的10倍加a,由此可以使用递归的方法求得结果。
  7. *                 分析:
  8. *                 a1=a;a2=a1*10+a,a3=a2*10+a...
  9. *                 由此可以定义一个递归方法,传入上一个数的值num,返回sum的值。
  10. *                 结束条件为num值达到最大,即num/(int)Math.pow(10,n-1)==a
  11. *                 方法每调用一次,sum+=num;
  12. */

  13. class GetTest08 {
  14.         private int n, a, sum = 0;

  15.         public GetTest08(int n, int a) {
  16.                 super();
  17.                 this.n = n;
  18.                 this.a = a;

  19.                 System.out.println("结果为:" + getSum(a));
  20.         }

  21.         public int getSum(int num) {
  22.                 if (n < 0) {
  23.                         System.out.println("错误:n的值不能小于0。");
  24.                         System.exit(0);
  25.                 }
  26.                 if (a < -9 || a > 9) {
  27.                         System.out.println("错误:a的值只能为一位数。");
  28.                         System.exit(0);
  29.                 }
  30.                 if (n == 0)
  31.                         return 0;

  32.                 if (num / (int) Math.pow(10, n - 1) == a)
  33.                         return sum += num;

  34.                 getSum(num * 10 + a);
  35.                 return sum += num;
  36.         }
  37. }

  38. public class Test08 {
  39.         public static void main(String[] args) {
  40.                 Scanner sc = new Scanner(System.in);
  41.                 System.out.println("请输入a(每一位的数字)的值:");
  42.                 int a = sc.nextInt();

  43.                 System.out.println("请输入n(需要相加的个数)的值:");
  44.                 int n = sc.nextInt();

  45.                 new GetTest08(n, a);
  46.         }
  47. }
复制代码
您需要登录后才可以回帖 登录 | 加入黑马