#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
//函数递归:函数自己调用自己,以少量代码完成大量复杂的运算,把大事化小。
//1、不能死递归,必须有跳出条件,每次递归逼近跳出条件。
//2、递归层次不能太深
//两个错误示范:
//1、main函数内调用main函数本身的死递归:
// int main()
//{
// printf("hello world");
// main();//此处main函数调用main函数自己,由于没有跳出条件,每次递归也不会逼近跳出条件,导致运行后会一直打印 hello world,直到栈溢出后结束程序。
// return 0;
//}
//2、递归层次太深导致的死递归:
//void test(int x)
//{
// if (x < 10000)//此处跳出条件为n>10000,而n是从1开始,每次递归为n+1,需要递归9999次,才可以跳出,由于递归层次太深,导致运行后会出现栈溢出错误。
// {
// test(x + 1);
// }
//}
//
//int main()
//{
// int a = 1;
// test(a);
// return 0;
//}
//正确示范:
//编写一个程序:要求接受一个整型值(无符号),按照顺序打印它的每一位。例如:输入:5678,输出5 6 7 8.
void print(unsigned int n)
{
if (n > 9)//跳出条件 n<9,
{
print(n / 10);//开始递归,每次递归为n/10。
}
printf("%d ", n % 10);//打印n%10的值。
}
int main()
{
unsigned int num = 0;
scanf("%u", &num);//5678
//递归 - 函数自己调用自己
print(num);//print函数可以打印参数部分数字的每一位
return 0;
}