#include<iostream>
using namespace std;
void print(int a);
void print1(int a);
void main(){
int n;
cin>>n;
print(n);
cout<<endl;
print1(n);}
void print(int a){
while(a>0){
cout<<a%10<<" ";
a=a/10;}}
void print1(int a){
while(a>0)
{
cout<<a%10<<" ";
print1(a/10);}}
把print1函数的while改为if 才能够运行出正确结果 不然 如果输入123 会输出3 2 1 1 1 1 1 1 1 1.。。。。
对啊,while是当条件满足时进行循环;而if 是当条件满足时执行一次。
把print1函数的while改为if 才能够运行出正确结果。因为在print1函数中,没有修改变量a的值,a的值就永远是321。就会永远“死循环”。
而改为if 后,因为递归能把十位以上的数字打印出来,所以只要执行一次就够了。