Javaのタイトルベースのアルゴリズム(08):見つけるS = A + AA + AAA + AAAA + AA ...数での値。例えば、2 + 22 + 222 + 2222 + 22222(この場合は5番の合計)、いくつかの数字と共に制御キーボード。

すべての50個の基本的な算術の質問を見る、以下を参照してください。

50個の質問のJavaの基本的なアルゴリズム

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));
        }
    }
}

公開された22元の記事 ウォンの賞賛1 ビュー1424

おすすめ

転載: blog.csdn.net/weixin_44803446/article/details/105354780