2012-03-26 41 views
-7

第1步:在这个实验中,您将学习如何声明函数。 在MSVS中输入,保存,编译并执行以下程序。调用新目录“recursionExp1”和程序“recursion1.cpp”。回答以下问题:如何在本程序中编写关于递归的基本案例?

#include <iostream> 
    using namespace std; 

     void recursive_countdown(int count) 
    { 
if (count == 0) 
    cout<<"count="<<count<<endl; 
else 
{ 
    cout<<"count="<<count<<endl; 
    recursive_countdown(--count); 
} 
     } 


    int main(void) 
    { 
int count = 10; 

recursive_countdown(count); 

return 0; 
} 

问题1:程序做了什么?

问题2:请写出基本情况?

问题3:recursive调用了多少次“recursive_countdown”?

问题4:请在第1步中使用迭代函数重写倒计时?调用函数“iterative_countdown”。

问题5:哪种类型的函数(递归或迭代)执行得最快?请解释?

+1

虽然作业问题是可以接受的,但这看起来像是一个“给我答案”的问题。 – crashmstr 2012-03-26 18:36:03

+3

听起来像家庭作业 - 你应该标记它。另外,请说明你迄今为止所做的事情以及你被卡住的地方,否则你会得到很多降价提示,并且没有答案... – Attila 2012-03-26 18:36:23

+1

“程序做了什么?”。那么,编译并运行它,杜。 :) – Zeta 2012-03-26 18:36:53

回答

7

这似乎是功课。为了正确回答这个问题,我会引导你回答问题,而不是给你。

A 递归算法/函数在完成之前会自己调用一些次数。为了让递归堆栈停止,它需要有一个情况,它不会再次调用自己,但会返回一些东西。这种情况被称为基本情况

您递归提供的程序从任何数字传递给第一个recursive_countdown()调用(在本例中为10)进行递减计数。当函数不再调用自己时,在递归函数中会出现这种情况,这是您的基本情况。想想这将是什么逻辑,什么时候你想要倒计时功能停止?现在在你的代码中查找它。