Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法理解这19行C++;代码正在执行所需的任务(使用递归),所以我制作了它的堆栈,但仍然存在一个问题 我的问题是编写一个C++程序,用递归方式打印给定字符串的所有子串。这是在一个免费的youtube课程中,老师只告诉学生问题和答案,没有详细的解释。所以,我复制了代码并执行了它,它工作正常,但我想检查堆栈是如何管理的,所以我制作了堆栈并发现了一个问题 你可以检查问题的细节,比如问题陈述、C++代码、输出、解释、堆栈等。_C++_C++11_Visual C++_C++17_C++14 - Fatal编程技术网

无法理解这19行C++;代码正在执行所需的任务(使用递归),所以我制作了它的堆栈,但仍然存在一个问题 我的问题是编写一个C++程序,用递归方式打印给定字符串的所有子串。这是在一个免费的youtube课程中,老师只告诉学生问题和答案,没有详细的解释。所以,我复制了代码并执行了它,它工作正常,但我想检查堆栈是如何管理的,所以我制作了堆栈并发现了一个问题 你可以检查问题的细节,比如问题陈述、C++代码、输出、解释、堆栈等。

无法理解这19行C++;代码正在执行所需的任务(使用递归),所以我制作了它的堆栈,但仍然存在一个问题 我的问题是编写一个C++程序,用递归方式打印给定字符串的所有子串。这是在一个免费的youtube课程中,老师只告诉学生问题和答案,没有详细的解释。所以,我复制了代码并执行了它,它工作正常,但我想检查堆栈是如何管理的,所以我制作了堆栈并发现了一个问题 你可以检查问题的细节,比如问题陈述、C++代码、输出、解释、堆栈等。,c++,c++11,visual-c++,c++17,c++14,C++,C++11,Visual C++,C++17,C++14,我在此附上代码: #include<iostream> using namespace std; void sub( string s, string ans="") { if(s.length()==0) { cout<<ans<<endl; return; } char ch = s[0]; string ros = s.substr(1); //ros- Rest

我在此附上代码:

#include<iostream>
using namespace std;
void sub( string s, string ans="")
{
    if(s.length()==0)
    {
        cout<<ans<<endl;
        return;
    }
    char ch = s[0];
    string ros = s.substr(1); //ros- Rest of the string
    sub(ros,ans);
    sub(ros,ans+ch);
}
int main()
{
    sub("ABC","");
    return 0;
}
#包括
使用名称空间std;
无效子项(字符串s,字符串ans=“”)
{
如果(s.length()==0)
{

cout您可以插入函数以更清楚地看到发生了什么:

#include<iostream>
using namespace std;
void sub( string s, string ans="",int stack_counter =0)
{
    std::cout << "\n";
    std::cout << stack_counter << " inp " << s << " " << ans << "\n";

    if(s.length()==0)
    {
        cout<<ans<<endl;
        return;
    }
    char ch = s[0];
    string ros = s.substr(1); //ros- Rest of the string
    std::cout << stack_counter << " call sub(" << ros << "," << ans << ")";
    std::cout << " and sub(" << ros << "," << (ans+ch) << ")\n";
    sub(ros,ans,stack_counter+1);
    sub(ros,ans+ch,stack_counter+1);
}
int main()
{
    sub("ABC","");
    return 0;
}
sub(“ABC”,“A”),它将调用两个函数sub(“BC”,“A”)和sub(“BC”,“A”)。让我们忽略sub(“BC”,“A”)

0 inp ABC 
0 call sub(BC,) and sub(BC,A)
sub(“BC”、“A”)将调用sub(“C”、“A”)和sub(“BC”、“AB”)两个函数

1 inp BC A
1 call sub(C,A) and sub(C,AB)

<代码>子(“BC”,“A”)<代码>子代码(“C”,“A”)>代码>子(“C”,“AB”)< /代码>

……所以我做了堆栈并发现了一个问题。“我做了堆栈”是什么意思?问题是什么?只在需要图像时使用图像,甚至考虑到不是每个人都能查看图像,因此你也应该描述“问题”。在textTime中学习如何使用调试器,以便在监视变量及其值的同时逐条执行代码语句。逐步执行每个递归调用以查看发生了什么。显然,您在以图形方式表达问题方面做了大量工作。不幸的是,本网站的规则和习惯是用tex来表达问题事实上。看——虽然你在这里发布了代码,但推理也适用于问题文本。所以,我真的不想阻止你参与!这比在这个网站上的五个平均问题中花费更多的精力来制定一个问题!做得好!但在这里使用文本很重要(哇,非常感谢。我现在知道了。
1 inp BC A
1 call sub(C,A) and sub(C,AB)