解题思路:
1.n==1时,兑换0瓶;
2.n==2时,根据题意可以兑换1瓶;
3.n==3时,可以兑换1瓶;
4.n==4时,可以兑换2瓶;
以此类推......可得递归公式为f(n) = f(n - 2) + 1(n >=3 ),该公式可以理解为,从最开始的n个空瓶中拿出三个空瓶(此时空瓶剩余数量为(n - 3)),兑换了1瓶汽水(为递归公式中的1),喝掉之后空瓶子的数量为(n-3 + 1),这(n - 2)个瓶子可兑换的汽水数量为f(n - 2)......所以最终递推公式为:f(n) = f(n - 2) + 1(n >=3 )
注意事项:
参考代码:
#include<stdio.h>
int f( int n )
{
if( n == 1 )
return 0;
else if( n == 2 )
return 1;
else
return f(n-2) + 1;
}
int main()
{
int n, a[100], i, j;
for(i = 0; ;i++)
{
scanf("%d",&n);
if( n != 0 )
a[i] = n;
else
break;
}
for (j = 0; j < i; j++)
{
printf("%d\n",f( a[j] ));
}
return 0;
}
0.0分
0 人评分
C二级辅导-统计字符 (C语言代码)浏览:541 |
C语言训练-斐波纳契数列 (C语言代码)浏览:2827 |
C语言训练-角谷猜想 (C++代码)(3N+1问题)浏览:1751 |
C二级辅导-计负均正 (C语言代码)浏览:658 |
淘淘的名单 (C语言代码)答案错误???浏览:595 |
WU-蓝桥杯算法提高VIP-Quadratic Equation (C++代码)浏览:1756 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:262 |
1009题解浏览:752 |
愚蠢的摄影师 (C++代码)浏览:938 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:459 |