用递归解决一些算法问题(day04)

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日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值