在分析递归函数的调用时要一层一层的薄丝,然后再根据结果反推要要实现的内容,因为我们根据程序分析是从最里面分析的
一、输入一个数将每一个数都一次打印出来:
这里要用到取模和除整的运算:
要记住的是取模取的位数是0的个数,%10那么取的就是0-9,%100那么取的就是0-99
除整就是将小数点向前移动几位然后将前面的数值保留下来
二、利用函数计算字符串的长度:
这里要注意的是关于字符串的传入,传入数组时,传入的是首个元素的地址,那么便需要用指针来接收这个地址,在对地址内容进行操作是需要用到解引用,而想操作数组的其他元素时,需要对定义的指针进行操作 还有注意的是字符串数组结束的标志是‘\0’不能用双引号将\0括起来
将一个数的每一都打印出来
void print(int n) {
if (n > 9) {
print(n / 10);
}
printf("%d ", n % 10);
}
int main() {
int num = 0;
scanf("%d", &num);
print(num);
}
利用函数打印出字符串的长度
int my_len(char* arr) {
int i = 0;
while(*arr != '\0') {
i++;
arr++;
}
return i;
}
递归的方法实现
int my_len(char* arr)
{
if (*arr != '\0') {
return 1 + my_len(arr + 1);
}
else {
return 0;
}
}
int main() {
char arr[]= "abc";
int len = my_len(arr);
printf("len=%d\n",len);
}
递归实现n的阶乘
int fun(int n) {
if (n <= 1)
{
return 1;
}
else{
return n*fun(n - 1);
}
}
int main() {
int n = 0;
printf("请输入一个数\n" );
scanf("%d",&n);
int sum= fun(n);
printf("%d", sum);
}
s