先上代码:
#define _CRT_SECURE_NO_WARNINGS 1 //main.c
#include "ku.h"
int main()
{
int sum = 12345678;
print(sum);
return 0;
}
#include "ku.h"//ku.c
void print(int n)
{
if (n > 9)
{
print(n / 10);
}
printf("%d ", n % 10);
}
#include <stdio.h>//ku.h
#include<windows.h>
void print(int n);
讲解部分:
如何写一个递归函数?
递归的两个必要条件:
1、存在限制条件,当满足这个限制条件的时候,递归便不再继续。
2、每次递归调用之后越来越接近这个限制条件。
解题思路:
step1:获得一个整数的每一位【以123为例】:
123%10=3----获得第三位,打印。 123/10=12----取得前两位。
12%10=2----获得第二位,打印。 12/10=1----取得前一位。
1%10=1----获得第一位,打印。 1/10=0----极限条件。
void print(int n)
{
while (n)
{
printf("%d ", n % 10);
n = n / 10;
}
}
step2:将123的打印拆分:
print(123)---↓先往下开始递。 ↑
print(12) + 3 ----↓ ↑
print(1) + 2 + 3 ---->此时到达极限条件(n>9),开始归↑