题目
【问题描述】在Main类中编写一个方法f(a,n)用来求aa...a(这个数由n个a构成)的值。在主方法中输入a和n(a和n的范围均为1~9),调用f()求s=a+aa+aaa+aaaa+...+aa...a的值,并输出s的值。例如2+22+222+2222+22222(此时a为2,n为5)。如果输入的a或n超过范围,则输出input error。
【输入形式】a n
【输出形式】a+aa+aaa+aaaa+...+aa...a的值
【样例输入】
3 4
【样例输出】
3702
codding
拆解题目关键信息,编写代码。
在主方法中输入a和n(a和n的范围均为1~9)
如果输入的a或n超过范围,则输出input error。
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int n = sc.nextInt();
if(a<1||a>9||n<1||n>9){
System.out.println("input error");
return;
}
在Main类中编写一个方法f(a,n)用来求aa...a(这个数由n个a构成)的值。
public static int f(int a,int n){
return 1;
}
调用f()求s=a+aa+aaa+aaaa+...+aa...a的值,并输出s的值。例如2+22+222+2222+22222(此时a为2,n为5)。
了解函数主体做的事情是求a+aa+aaa+aaaa+...+aa...a
public static int f(int a,int n){
if(n==1)
return a;
int m =a;
for(int i = 1;i<n;i++){
m=m*10+a;
}
return m+f(a,n-1);
}
完整code
//package work007;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int n = sc.nextInt();
if(a<1||a>9||n<1||n>9){
System.out.println("input error");
return;
}
System.out.println(f(a,n));
}
public static int f(int a,int n){
if(n==1)
return a;
int m =a;
for(int i = 1;i<n;i++){
m=m*10+a;
}
return m+f(a,n-1);
}
}