C 满足基本条件后,程序在递归中不终止循环

C 满足基本条件后,程序在递归中不终止循环,c,recursion,while-loop,C,Recursion,While Loop,为什么在满足基本条件后,控件返回到程序顶部?它应该只在递归调用后执行当前行。{output 54322233}显示控件正在返回代码顶部: void print(int a) {while(a!=1) { printf("%d",a); a--; print(a); }} 您的代码同时实现了递归和迭代!让我们将两者分开: 迭代: void print(int a) { while (a >= 1) {

为什么在满足基本条件后,控件返回到程序顶部?它应该只在递归调用后执行当前行。{output 54322233}显示控件正在返回代码顶部:

    void print(int a)
    {while(a!=1)
    {
    printf("%d",a);
    a--;
    print(a);
    }}

您的代码同时实现了递归和迭代!让我们将两者分开:

迭代:

void print(int a)
{
    while (a >= 1)
    {
        printf("%d\n", a);
        a--;
    }
}
递归:

void print(int a)
{
    if (a >= 1)
    {
        printf("%d\n", a);
        print(a - 1);
    }
}
#包括
使用名称空间std;
空白打印(INTA);
int main(){
INTA=10;
印刷品(10);
} 作废打印(INTA) { 而(a!=5)

a--;

递归不会在5停止,因为这里没有递归!所以每次我进行递归调用时,我都会在递归循环中创建一个while循环。比如说,我输入3,代码输出3A——将变量的值更新为2,然后2进入递归调用,它进入另一个while循环,while循环输出2,更新变量的值变量为1并调用递归,1进入另一个while循环条件为true。它退出代码,不返回函数调用的位置。读取时,返回代码顶部并再次打印2。while循环的变量值为2。因此,如果在递归调用状态之后使用return那么while循环对于每个递归调用只运行一次
 #include<iostream>
using namespace std;

void print(int a);

int main() {

int a = 10;
print(10);
a--;
cout << a << endl;
}