解题思路:
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 人评分
简单的a+b (C语言代码)浏览:521 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:519 |
C语言训练-大、小写问题 (C语言代码)浏览:724 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:594 |
完数 (C语言代码)浏览:686 |
回文数字 (C语言代码)浏览:2510 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:555 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:556 |
【偶数求和】 (C语言代码)浏览:431 |
简单的a+b (C语言代码)浏览:504 |