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>


分享到:


相關文章: