java 面试编程题,如下,怎么写??是北京一家的公司!
3个回答
展开全部
public class testJP {
public static void main(String[] args) {
int money=20;
int BottleNumber=0;//喝到BottleNumber瓶酒
int bottle=0;//当前酒瓶数目
BottleNumber=getWine(money,BottleNumber,bottle);
System.out.println("一共可以喝到"+BottleNumber+"瓶酒,当喝完第"+(BottleN umber-1)+"瓶酒后,还剩一个空瓶,再向卖家借一个空瓶,两个空瓶兑换一瓶酒,喝完后 再把这个空瓶还给卖家");
}
public static int getWine(int money,int BottleNumber,int bottle){
if(money>0){
BottleNumber+=money;
// 20元先全部换成酒,这时候钱设置为0
money=0;
}
bottle+=BottleNumber;
BottleNumber=change(BottleNumber,bottle)+1;
return BottleNumber;
}
public static int change(int BottleNumber,int bottle){
if(bottle>1){
BottleNumber+=bottle/2;
bottle=bottle-bottle/2*2+bottle/2;
BottleNumber=change(BottleNumber,bottle);
}
return BottleNumber;
}
}
展开全部
public class Test {
public static int fun(int bottle){
if(bottle<=1){
return 0;
}
int b=bottle/2;//本次用空瓶换了多少
if(bottle%2==0){
return b+fun(b);
}else{
return b+fun(b+1);
}
}
public static void main(String[] args) {
System.out.println("一共有:"+(20+fun(20)));
}
}
20元知道的换写死了,第一次就能拿到20个空瓶,接下来就是空瓶的不断递归。如果空瓶小于两个,就得返回了,这个是递归的结束条件。别的应该还是好理解的
public static int fun(int bottle){
if(bottle<=1){
return 0;
}
int b=bottle/2;//本次用空瓶换了多少
if(bottle%2==0){
return b+fun(b);
}else{
return b+fun(b+1);
}
}
public static void main(String[] args) {
System.out.println("一共有:"+(20+fun(20)));
}
}
20元知道的换写死了,第一次就能拿到20个空瓶,接下来就是空瓶的不断递归。如果空瓶小于两个,就得返回了,这个是递归的结束条件。别的应该还是好理解的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int num=0;
public int A(int total) {
if(total==0) return num;
num++;
total--;
if(num%2==0){
total++;
}
return A(total);
}
public int A(int total) {
if(total==0) return num;
num++;
total--;
if(num%2==0){
total++;
}
return A(total);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询