一道递归题目

题目:请用递归的方法输出。

实例:输入:12345

​ 输出:1 2 3 4 5

这是上午c++课上老师出的题。一想到递归,我整个人就蒙圈了。原来用循环就能轻松解决的,用递归好像很难在脑海中模拟。课上讲了栈的知识,那是不是可以用栈的知识解决呢?

以上是用栈表示本题递归思路。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
void splitNum(unsigned int n)
{
if(n>9)//只要不是一位数就执行
splitNum(n/10);
cout<<n%10<<" ";//当是一位数时结束递归,开始一层一层向上继续本行的取末位
}
int main()
{
unsigned n;
cin>>n;
splitNum(n);
return 0;
}

本题难理解的点就是递归时没有返回值,而是在递归处中断,当递归结束时才继续每一层的后续操作。

要多复习啊