买桃问题
问题描述
一个人摘了一些桃子,第一天卖掉了一半,又吃了一个,第二天卖掉了一半,又吃了一个,以后天天都是如此处理,到第n天发现桃子只剩下一个桃子,n是参数,返回值是一共摘的桃子数。
package 算法设计与分析;
import java.util.Scanner;
public class 递推法解决卖桃 {
//分析
//最后一天是2,倒数第二天应为4,倒数第三天应为10,总结应满足公式number=(number+1)*2
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入天数");
int n= input.nextInt();
int number=1;
for(int i=2;i<=n;i++)
{
number=(number+1)*2;
//从最后一天往前推,假设猴子上一天没吃那个多的桃子,
//那么前一天的桃子数量就应该是今天的2倍。
}
System.out.println("猴子第一天摘了"+number+"桃子");
}
}
运行结果
求两个数的最大公约数
输入两个数,求这两个数的最大公约数
package 算法设计与分析;
import java.util.Scanner;
public class 递归法求最大公约数 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入第一个数字");
int a = input.nextInt();
System.out.println("请输入第二个数字");
int b = input.nextInt();
int r = 1;
// a对b取余,b赋值给a 余数赋值给b,,直到 b == 0
do {
r = a % b;
a = b;
b = r;
}
while(b!=0);{
System.out.print("这两个数的最大公约数为"+a);
}
}
}
运行结果