67,513
社区成员
发帖
与我相关
我的任务
分享
public class demo {
/**
* .输入一个正数n,输出所有和为n 连续正整数序列.
* 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。
*/
public static void one(int a){
int i=1;
int j=1;
for(i=1;i<=a-1;i++){
int x=0;
for(j=i;x<=15;j++){
x=x+j;
if(x==a){
System.out.println(i+"--"+j);
}
}
}
}
public static void main(String[] args) {
one(15);
}
}
[/quote]public class demo {
/**
* .输入一个正数n,输出所有和为n 连续正整数序列.
* 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。
*/
public static void one(int a){
int i=1;
int j=1;
for(i=1;i<=a-1;i++){
int x=0;
for(j=i;x<=15;j++){
x=x+j;
if(x==a){
System.out.println(i+"--"+j);
}
}
}
}
public static void main(String[] args) {
one(15);
}
}
static void six1(int n) {
// 每次弹回原来的一半所以是一个等比数列, 公比为1/2. 第10次高度是100/2^10
System.out.println("第"+n+"次反弹"+((100.0/(1<<n)))+"米高度");
// 经过多少米, 就是计算等比数列前N项和. 首项a1,公比q(q不等于1),前n项和Sn=a1(1-q^n)/(1-q)。
// 因为弹起再落下实际经过了两次, 为了满足这个公式这里将100多计算一次最后再减掉即可
System.out.println("第"+n+"次落地时,共经过"+(100*(1-(1.0/(1<<n)))*4-100)+"米");
}
兔子的计算采用费式数列会产生很多重复计算,直接换成循环更好public int f(int n) {
int a1 = 1, a2 = 1, number = a1;
for (int i = 3; i <= n; i++) {
number = a1 + a2;
a1 = a2;
a2 = number;
}
return number; // 这里算出来是多少对, 如果算只的话x2就行
}