ps:全文中如果有任何错误您看到并能指出来的话(尤其是递归树)感激不尽XDDDD
每个问题包含:
(1)题目描述(2)递归解决代码(3)非递归解决代码(4)递归模型(5)递归树(6)运行结果截图
一、卖鸭子问题
1.题目描述
一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
2.递归解决代码(解释见代码)
/*
@Author:Innocence
@IDE:dev C++
@OS:win10
@Time:2019/5/30
@Edition:1.0
@Description:【递归解决】已知剩下的鸭子和卖鸭子的规则求一开始的鸭子数及每个村庄卖的鸭子
*/
#include<iostream>
using namespace std;
int sale(int left_duck,int flag)
{ // 倒推过程
int sale_duck=(left_duck+1)*2-left_duck; // 卖出的鸭子数=(剩下的鸭子数+1)*2[即原本的鸭子数]-剩下的鸭子数
int duck=sale_duck+left_duck; // 原本的鸭子数=剩下的+卖出的
flag-=1; // 因为是倒推所以村落数递减
if(flag<