【问题描述】请采用递归函数实现:输入一个正整数,然后把该整数的每一位数字从高位到低位顺序输出,每个数字占一行。
#include<iostream>
using namespace std;
int main()
{
int f(int x);
int n;
cout<<"Please enter a positive integer:"<<endl;
cin>>n;
cout<<"The sequential output from high to low is:"<<endl;
f(n);
}
int f(int x)
{
if(x>9)
{
f(x/10); #标记为(1)
cout<<x%10<<endl; #标记为(2)
}
else
cout<<x<<endl;
}
递归函数分析:从输入123456开始进入if里,执行标记(1),标记(2)不执行,在(1)的函数里继续执行到标记(1),标记(2)不执行,直到最后一个递归函数不进入if语句,执行else输出1后最后一个递归函数执行结束,返回倒数第二个递归函数中执行标记(2),输出结果后此函数结束,进入倒数第三个递归函数中执行标记(2).....直到输出最后一位数字,所有的递归函数均执行完成,程序结束。
效果: