喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
#include<stdio.h>
int main(void)
{
int money = 20;
int totol = money;
int empty = money;
while(empty>1)
{
totol += totol + empty/2;
empty = empty/2 + empty%2;
}
printf("%d\n",totol);
return 0;
}
最近学了函数的递归,顺便用递归解决一下,这里只写函数
int getNumber(int n)
{
if(n ==1)
{
return 1;
}
else if(n >=2 && n % 2 == 0 )
{
return n + getNumber(n/2);
}
else if(n >=2 && n % 2 !=0)
{
return n + 1 + getNumber(n/2);
}
}
当然我们从大量的结果发现,喝的水是钱数的二倍减一,所以可以简化成:
totol = money * 2 - 1;
这其实就是一种算法,把复杂的问题通过分析,找出规律。
本文探讨了一个经典的数学问题——利用有限的资金如何最大化汽水的饮用数量,并提供了两种解决方案:一种是使用循环结构进行迭代计算;另一种是采用递归函数逐步求解。最终,通过观察大量计算结果发现了一个简洁的公式,即购买的汽水数量等于资金数额的两倍减一。
968

被折叠的 条评论
为什么被折叠?



