c语言递归求回文数
时间: 2023-07-02 09:22:19 浏览: 52
可以使用递归来判断一个数是否为回文数,代码如下:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[], int start, int end) {
// 递归结束条件
if (start >= end) {
return 1;
}
// 如果首尾字符不相等,返回0
if (str[start] != str[end]) {
return 0;
}
// 递归判断中间的字符是否为回文数
return isPalindrome(str, start+1, end-1);
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
if (isPalindrome(str, 0, len-1)) {
printf("%s 是回文数\n", str);
} else {
printf("%s 不是回文数\n", str);
}
return 0;
}
```
该程序将输入的字符串作为参数传递给 `isPalindrome` 函数,`start` 和 `end` 分别表示字符串的首尾字符的下标,通过递归的方式不断缩小范围,判断字符串是否为回文数。
相关问题
java用递归求回文数
下面是Java代码实现递归求回文数的方法:
```java
public static boolean isPalindrome(String str) {
if (str.length() <= 1) {
return true;
}
if (str.charAt(0) != str.charAt(str.length() - 1)) {
return false;
}
return isPalindrome(str.substring(1, str.length() - 1));
}
```
这个递归函数会不断地比较字符串的首尾字符是否相同,如果不相同就返回false,如果长度为1或0就返回true,否则就递归调用函数,将首尾字符去掉后的子串作为参数传入。
c语言递归求阶乘数列
以下是C语言递归求阶乘的代码示例:
```c
#include <stdio.h>
long long factorial(long long n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
long long n;
scanf("%lld", &n);
printf("%lld! = %lld", n, factorial(n));
return 0;
}
```
在这个示例中,我们定义了一个名为`factorial`的函数,该函数使用递归来计算阶乘。如果输入的参数`n`为0,则返回1,否则返回`n`乘以`factorial(n-1)`的结果。在`main`函数中,我们从用户输入中读取一个整数`n`,并使用`factorial`函数计算`n`的阶乘,最后输出结果。