Java基础语法题(08):求s=a+aa+aaa+aaaa+aa…a的值

题目描述:

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



<code>    package Demo08Lots_Number;
import java.util.Scanner;
public class Lots_Number {
/**
* 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
* 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
*/
/*
分析:用户要输入两个数,一个是a的值,一个是有n个数相加。
找规律:个数: 1 2 3
a a*10+a a*100+(a*10+a)
每个数都是:前一个数+a*10^(n-1),可以考虑用递归的方法来获取前一个值
*/
public static void main(String[] args) {
System.out.println("该程序用于计算:s=a+aa+aaa+aaaa+...+na的值。");
Scanner sc = new Scanner(System.in);
// 让用户输入a的值
System.out.println("请输入a的值:");
int a = sc.nextInt();
// 让用户输入相加的个数
System.out.println("请输入要相加的个数n: ");
int n = sc.nextInt();
double cons = sums(a,n);
System.out.println(cons);
}
/**
* 后一个数跟前一个数是有关系的,所以定义一个递归方法,来获取前一个数并求和
* @param a

* @param n
* @return
*/
public static double sums(int a,int n){
if(n==1){
return a;
}else{
// 后一个数等于前一个数加a乘10的(n-1)次方,前一个数是sums(a,n-1)
return sums(a,n-1)+sums(a,n-1)+a*Math.pow(10,(n-1));
}
}
}/<code>


分享到:


相關文章: