汽水
题目:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,
给20元,可以多少汽水
分析:
20元可以先买到20瓶汽水,所以可以编写一个函数求得20个空瓶可以得到多少瓶汽水。
递归方法:可以先求得空瓶第一次能得到汽水的数量,然后求得第二次的到空瓶的数量,调用自己的函数可以的到第二次空瓶换得汽水的数量,以此计算直至判断条件空瓶的数量不足以换得汽水。
递归函数方法参考:
int emptyBottle(int x)
{
int ret = x / N;//空瓶兑换的汽水个数
int empty = x / N + x % N;//兑换的汽水和剩下的空瓶个数之和
if (empty > 1)
return ret + EmptyBottle(empty);
else
return ret;
}
非递归方法实现:
在函数中定义临时变量用于存储可换得汽水的数量,在循环中计算每一次可剩余空瓶的数量,循环结束条件也是空瓶的数量不足以兑换一瓶汽水为止。
非递归函数方法参考:
int EmptyBottle(int x)
{
int ret = 0;
while (x>1)
{
ret += x / N; //x没有发生改变,用ret记录能够换来汽水的数量
x = x / N + x%N; //x剩余空瓶的数量
}
return ret;
}
参考代码如下:
#include <stdio.h>
#define P 1 //汽水的单价
#define N 2 //换一瓶汽水所需的空瓶个数
//EmptyBottle函数返回用空瓶换来的汽水个数
//非递归
int EmptyBottle(int x)
{
int ret = 0;
while (x>1)
{
ret += x / N; //x没有发生改变,用ret记录能够换来汽水的数量
x = x / N + x%N; //x剩余空瓶的数量
}
return ret;
}
//递归
//int EmptyBottle(int x)
//{
// int ret = x / N;//空瓶兑换的汽水个数
// int empty = x / N + x % N;//兑换的汽水和剩下的空瓶个数之和
// if (empty > 1)
// return ret + EmptyBottle(empty);
// else
// return ret;
//}
int main()
{
int p = 0;
int n = 0;
printf("请输入金额:");
scanf("%d", &p);
n = p / P;
int bottle = n + EmptyBottle(n);//最终喝到的汽水个数
printf("可换得%d瓶\n", bottle);
return 0;
}
运行结果展示:
相关阅读
1、字段名书写错误2、就是用到了oracle的关键字select * from v$reserved_words //查看oracle关键字 (size user 等)
737主机体在最开始设计时候发动机很小,后来换大号发动机时候发现原来设计的位置装不下 为了避免起落架太矮(轱辘太短)导致发动机太
最近在研究iphone手机备份的问题,在使用itunes给手机备份的时候,发现C盘空间不够用了,于是想把itunes的默认存储路径修改一下,在网上
天猫和淘宝拼多多一样,不时的推出很多优惠活动,秒杀活动也是其中一种,天猫秒杀专区很多人都不知道在哪里,秒杀需要回答问题就更不清楚
OnClientClick 不执行有两种问题1. JS有错误.不仅仅是OnClientClick所对应的方法有错会导致OnClientClick不执行,当前页面所有JS