1、读入一个小于10的整数num,输出它的阶乘
Scanner scan = new Scanner(System.in);
int num= scan.nextInt();
static int one(int num) {
if (num==1)
return 1;
else {
return one(num-1) * num;
}
}
2、猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。求第一天共摘了多少。
int result2 = two(1);
static int two(int num) {
if(num ==10 )
return 1;
else {
return (two(num+1)+1)*2;
}
}
3、找出100–999里面有多少个水仙花数,分别输出这些水仙花数?
for(int x = 2;x<1000;x++)
if(three(x) == x)
System.out.println("水仙花数是" + x);
static int three(int num) {
int a = num % 10;
if ( num > 10 )
return three(num/10)+a*a*a;
else
return num*num*num;
}
4、小球从100米掉落,弹起到50米,然后再掉落,弹到25米,弹10次以后,
小球经过的路径是多少米,以及第10次弹地高度
double result = 0;
for (double x = 1.0d;x<=10;x++)
result += four(100.0d,x)+four(50.0d,x);
System.out.println("总路程为:"+result+"\n"+"第十次跳起的高度为:"+four(50.0d,10));
static double four(double height,double cishu) {
if(cishu<=1.0)
{
return height;
}
else {
return four(height/2,cishu-1);
}
}
5、斐波那契数列,比如1、1、2、3、5、8、13、21、34
计算前20个数的合,以及第20个数为
int n = 20;
int sum = 0;
for (int x = 3; x<=20;x++)
sum += five(x);
System.out.println("前"+n+"个数的合为:"+sum+"\n"+"第"+n+"个数为:"+five(n));
static int five(int n) {
if(n==1 || n==2)
{
return 1;
}
return five(n-1) + five(n-2);
}
by: 2019年10月16日