如何反转递归调用

How to reverse a recursive call?

本文关键字:调用 递归 何反转      更新时间:2023-10-16

我的任务是编写一个产生以下输出的函数:

This was written by call number 1.  
This was written by call number 2.  
This was written by call number 3.  
This was written by call number 4.  
This was written by call number 5.  
This was ALSO written by call number 5.  
This was ALSO written by call number 4.  
This was ALSO written by call number 3.  
This was ALSO written by call number 2.  
This was ALSO written by call number 1.

这并不局限于数字5,程序可以接受用户的任何输入,并输出他们的数字。

到目前为止我写的是:

void function_call(int number);
int main(){
    int userInput;
    cout<<"Please enter a digit: ";
    cin>>userInput;
    function_call(userInput);
}
void function_call(int number){
    if (number == 1){
        cout<<"This was written by call number "<<number<<"."<<endl;
    }
    else{
        function_call(number - 1);
        cout<<"This was written by call number "<<number<<"."<<endl;
    }
}

我当前的代码输出第一部分,但不输出数字减少的第二部分。如何使输出的第二部分显示出来?

在调用function_call(1,userInput):

时试试这个
void function_call(int curr,int last)
{
    if (curr <= last)
    {
        cout<<"This was written by call number "<<curr<<"."<<endl;
        function_call(curr+1,last);
        cout<<"This was ALSO written by call number "<<curr<<"."<<endl;
    }
}