给出1个C语言递归题目和完整答案以及解析,不要阶乘和斐波那契数列
时间: 2024-05-05 20:17:28 浏览: 54
题目:编写一个递归函数,计算一个字符串中某个字符出现的次数。
完整答案:
```c
#include <stdio.h>
int count(char *str, char ch) {
if (*str == '\0') {
return 0;
}
if (*str == ch) {
return 1 + count(str + 1, ch);
} else {
return count(str + 1, ch);
}
}
int main() {
char str[] = "hello world";
char ch = 'l';
printf("'%c' appears %d times in \"%s\".\n", ch, count(str, ch), str);
return 0;
}
```
解析:
这道题目要求我们编写一个递归函数,计算一个字符串中某个字符出现的次数。具体的实现思路是这样的:
- 如果字符串为空,则直接返回0。
- 如果字符串的第一个字符是需要查找的字符,则返回1加上递归计算剩余字符串中该字符出现的次数。
- 如果字符串的第一个字符不是需要查找的字符,则递归计算剩余字符串中该字符出现的次数。
在主函数中,我们定义一个测试字符串和需要查找的字符,然后调用递归函数计算该字符在字符串中出现的次数,并输出结果。
相关问题
给出1个C语言简单递归题目和完整答案以及解析,不要斐波那契数列
题目:编写一个递归函数,求一个正整数的阶乘。
答案:
```c
#include <stdio.h>
int fact(int n) {
if (n == 0 || n == 1) {
return 1;
}
else {
return n * fact(n-1);
}
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("%d的阶乘是%d\n", n, fact(n));
return 0;
}
```
解析:本题需要使用递归的思想,即在函数内部调用自身。递归要有一个递归出口,即当传入的参数满足某个条件时,不再递归,直接返回结果。在本题中,递归出口是当传入的参数为0或1时,直接返回1。否则,将n乘以n-1的阶乘,即为n的阶乘。在主函数中,先输入一个正整数n,然后调用fact函数计算n的阶乘并输出。
c语言递归函数的调用
C语言中的递归函数是指在函数内部调用自身的函数。递归函数可以用于解决一些需要重复执行相同操作的问题,例如计算阶乘、斐波那契数列等。下面是一个计算阶乘的递归函数的例子:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n = 5;
int result = factorial(n);
printf("%d! = %d\n", n, result);
return 0;
}
```
在这个例子中,factorial函数计算n的阶乘。如果n等于0,则返回1;否则,返回n乘以factorial(n-1)的结果。在main函数中,我们调用factorial函数计算5的阶乘,并将结果打印出来。
阅读全文