解题思路:
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 人评分
IP判断 (C语言代码)浏览:1414 |
小九九 (C语言代码)浏览:817 |
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:3392 |
程序员的表白 (C语言代码)浏览:1457 |
C语言训练-角谷猜想 (C++代码)(3N+1问题)浏览:1744 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:606 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:802 |
C二级辅导-阶乘数列 (C语言代码)浏览:688 |
WU-图形输出 (C++代码)浏览:800 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:519 |