C 满足基本条件后,程序在递归中不终止循环
为什么在满足基本条件后,控件返回到程序顶部?它应该只在递归调用后执行当前行。{output 54322233}显示控件正在返回代码顶部: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) {
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;
}