读书人

求其递归公式,该怎么处理

发布时间: 2012-10-16 09:57:37 作者: rapoo

求其递归公式
巧克力1美元一个,每一个巧克力都有一个代金券,7个代金券换1个巧克力,给你n美元,总结一个公式求能吃多少巧克力

[解决办法]
这个题目不用迭代更好解决吧。参考下面代码:

C/C++ code
#include <iostream>using namespace std;int main(void){    int money;    cout << "输入美元数:" << endl;    cin >> money;    int m = money;    int n = 0;    do    {        n += m / 7;        m = m / 7 + m % 7;    }    while(m >= 7);    cout << "可吃巧克力数量:" << money + n << endl;    return 0;}
[解决办法]
递归的写法(未严格验证,请楼主自验):
C/C++ code
#include <iostream>using namespace std;int chocolates(int money, int coupon){    if(money == 0 && coupon < 7)    {        return 0;    }    coupon += money;    return money + coupon / 7 + chocolates(0, coupon / 7 + coupon % 7);}int main(void){    int money;    cout << "输入美元数:" << endl;    cin >> money;    cout << "可吃巧克力数量:" << chocolates(money, 0) << endl;    return 0;}
[解决办法]
如下:
C/C++ code
#include <stdio.h>//代金券转换成巧克力int djq_to_qkl(int djq){    int qkl = djq/7;    while(djq >= 7)        return qkl += djq_to_qkl(djq/7 + djq%7);}int main(void){    int dollar = 20;    int qkl = dollar + djq_to_qkl(dollar);    printf("chocolates is %d\n",qkl);    return 0;}
[解决办法]
探讨
这是不对的,虽然6美元可以吃7个巧克力,但42美元只能吃(42+6+1)个巧克力而不是(42+7+1)个巧克力


引用:

用#5L的函数验证了下,公式M=N+N/6(N为美元数,M为巧克力数)是正确的。

读书人网 >C++

热点推荐