第一题,题目是输入1234,打印出来1 2 3 4,未学习函数递归时,简单的做法是给每一位定义一个变量,然后用取整取余求出这四个数字并将其付给四个已定义的变量。
今天,用函数递归简单一步就可搞定。废话不多说,上干货。
void print(int n) //头文件未匹配,自行定义哈。
{
if (n > 9)
{
print(n / 10);
}
printf("%d ", n % 10);
}
int main()
{
int num=0;
scanf("%d",&num);
print(num);
return 0;
}
第二题,题目是求出数组中的元素个数。这道题,用库函数strlen可以一步求出,
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "china";
printf("%d", strlen(arr));
return 0;
}
但若题目要求不可使用strlen,并且也不可以引入新的变量,该如何做呢?方法如下。
//头文件如上
int my_strlen(char* str)
{
if (*str != '\0')
return 1 + my_strlen(str + 1);
else
return 0;
}
int main()
{
char arr[] = "china";
printf("%d\n", my_strlen(arr));
}
后续有其他递归题及相关游戏会继续分享。