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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© java25 中级黑马   /  2016-8-15 14:03  /  561 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

能用递归做吗?

2 个回复

倒序浏览
import java.util.Scanner;  public class AddNum {         public static void main(String[] args) {                 int a, temp, num, c = 0, sum;                 Scanner sc = new Scanner(System.in);                 System.out.println("请输入一个数:");                 a = sc.nextInt();                 System.out.println("请输入位数:");                 temp = sc.nextInt();                 num = a;                 for (int i = 1; i < temp; i++) {                         a = a * 10 + num;                         c += a;                 }                 sum = c + num;                 System.out.println("sum:" + sum);         } }
回复 使用道具 举报
虽然说这个题目没有用递归的必要,但既然你要求了,那我就写写吧
[AppleScript] 纯文本查看 复制代码
public class Test3 {
        public static void main(String[] args) {
                //创建键盘输入流并获取需要的数据
                Scanner sc = new Scanner(System.in);
                System.out.println("计算s = a + aa + aaa + aaaa.......+ aaa...的值");
                System.out.println("输入a的值:");
                String num = sc.nextLine();
                System.out.println("请输入位数:");
                Integer wei = Integer.parseInt(sc.nextLine());
                //创建计算所需字符串
                StringBuilder sb = new StringBuilder();
                for(int i = 0; i < wei; i++){
                        sb.append(num);
                }
                //递归求和
                int sum = getSum(sb);
                //输出结果
                System.out.println(sum);
        }
        /**
         * 递归方法,每一次递归字符串截去一个字符
         * @param sb
         * @return
         */
        private static int getSum(StringBuilder sb) {
                //当字符串长度不为1,继续递归
                if(sb.length() != 1) {
                        return Integer.parseInt(sb.toString()) + getSum(new StringBuilder(sb.substring(1)));
                }else {
                        //字符串长度为1,返回当前字符串代表的值
                        return Integer.parseInt(sb.toString());                        
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马