1.计算s=a+aa+aaa+aaaa+aa…a+…的值
import java.util.Scanner;
public class Calcu{
public static void main(String[] args){
/*
分析每一项的值与该项的关系,a应为自然数
第i项 第i项的数值j 整个表达式的和
1 f(1)=a s=f(1)=a
2 f(2)=a+a*10=f(1)+a*10 s=f(1)+f(2)
3 f(3)=a+a*10+a*10*10=f(2)+a*10*10 .
. ... .
i f(i)=a+a*10+a*10*10+...+a*(int)Math.pow(10,i-1)=f(i-1)+a*(int)Math.pow(10,i-1)
即给定自然数a后,f(1)=a,当i>1时第i项的数值与第i-1项满足f(i)=f(i-1)+a*(int)Math.pow(10,i-1),使用for循环来遍历各项
*/
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个自然数作为题中的a:");
int a = sc.nextInt(); //只考虑用户的输入是自然数
System.out.print("请输入一个自然数作为总项数:");
int n = sc.nextInt(); //只考虑用户的输入是自然数
int s = 0; //s表示整个表达式的和
for(int i=1,j=a;i<=n;i++){
//i表示第i项,j表示f(i)
if(i==1){
s=a;
}else{
j=j+a*(int)Math.pow(10,i-1); //从第二项起,每一项的数值与前一项满足此关系
s=s+j; //所有项求和
}
}
System.out.print("表达式的和为:"+s);
}
}
2.计算一球某个高度自由下落,每次落地后反跳回原高度的一半,这时开始下一次落地,求n次落地后共经过多少米,第n次落地经过多少米,第n次反弹多高
分析:球先下降后上升,上升到起始高度一半,再下降再上升,球一直在执行重复操作,即下降上升,再下降上升,故要求n次落地后的总高度,将其分解为求每次下降上升的高度,再进行累加,而要求每次下降再上升的高度,只需求下降的高度,这样上升的高度就为下降高度的一半,而要求每次下降的高度,由于每次下降的高度a与落地次数i有关,有a=m*Math.pow(0.5,i-1),其中m为题目所给的高度 。
import java.util.Scanner;
public class Luodi{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入落地的次数:");
int n = sc.nextInt();//只考虑用户的输入为自然数
System.out.print("请输入起始高度:");
double m = sc.nextDouble();//只考虑用户的输入为数字
double a = 0,b = 0;//a表示第i次下降的高度,b表示第i次上升的高度
double s = 0,k = 0; //s表示第i次走过的总长度,k表示i次后走过的总长度
for(int i=1;i<=n;i++){
a=m*Math.pow(0.5,i-1); //第i次下降的高度
b=a*0.5; //第i次上升的高度
s=a+b; //第i次走过的总长度
k=k+s; //i次后走过的总长度
}
System.out.println(n+"次落地后共经过"+k+"米");
System.out.println("第"+n+"次经过"+s+"米");
System.out.println("第"+n+"次反弹"+b+"米");
}
}