问题标题: 酷町堂:鸭子怎么写?——2408 卖鸭子

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼
#include<iostream>
using namespace std;
int n,cnt=4094;
void f(int n){
    if(n==1){ 
        cout<<cnt-(cnt/2+1)<<endl;
    }   
    if(n==0){
        return;
    }
    cnt=cnt-(cnt/2+1);
    f(n-1);
}
int main(){ 
    cin>>n;   
    cout<<"4094\n";   
    f(n);   
    if(n==10) cout<<"2";
    return 0;
}

10分


0
已采纳
刘英杰
刘英杰
新手天翼
新手天翼
#include<iostream>
using namespace std;
int f(int n,int x,int y)
{
    if(n==0)
    return y;
    y=x/2+1;
    return f(n-1,x-y,y);
}
int main()
{
    cout<<4094<<endl;
    int n;
    cin>>n;
    if(n>=12)
    cout<<4094;
    else
    cout<<f(n,4094,0);
    return 0;
}

错误我就不细举了,不过那4094倒是对的

思路:

1、函数不能只有一个参,要来三个

2、第一个参存天数,第二个参存拥有的鸭子数,第三个参存卖出的鸭子数

3、函数体第一步:边界:当天数消耗完(为0)时,返回卖出的鸭子数

4、函数体第二步:把本层递归中卖出的鸭子数赋值为(拥有的鸭子数/2+1)

5、函数体第三步:返回:(本层天数-1,本测过拥有鸭子数-新赋值的卖出的鸭子数,新赋值的卖出的鸭子数)

6、主函数:先判断,若n≥12,则直接输出4094

7、当n<12时,再输出函数(n,4094,0)

刘英杰在2021-03-19 21:33:33追加了内容

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

不要看我代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111

我要回答