递归C++中int值不递增的运行时错误

Run time error for non increasing value of a int recursively C++

本文关键字:运行时错误 C++ int 递归      更新时间:2023-10-16

这是我的代码。我遇到一个运行时错误。有没有更好的递归方法?目标是:以3作为输入将产生此

  • 1 1 1
    2 1
    3

如果有更好的方法来实现简单的递归,我正在听

#include <iostream>
using namespace std;
int divide(int input,int memory) {
    if(memory==input){
        cout<<input;
        exit(1);
        }
    cout<<memory<<" ";
    int i=memory;
    for(i;i<input;i++){
        cout<<1<<" ";
    }
    cout<<endl;
    memory++;
    divide(input,memory);
}
int main() {
    // your code goes here
    divide(8,1);
    return 0;
}

由于以下行,您只会得到一个运行时错误:

exit(1);

更改为:

exit(0);

顺便说一句,如果你只是想在input==memory使用时停止该功能

return 0;

EDIT:int divide(int input,int memory) {这意味着您必须返回一个int。如果你真的不需要退货,请将其更改为:

void divide(int input,int memory) {

并使用:return;停止递归

编辑:既然你要求更清洁的实施(在我看来)将是:

void divide(int input,int memory) {
    std::vector<int> result(input - memory + 1, 1);
    result.front() = memory;
    std::copy(result.begin(), result.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << endl;
    if (input < ++memory) return;
    divide(input,memory);
}