摘自某博客,并不是每个问题都能用递归解决,能用递归解决的问题,必须满足两个条件:1、可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式;
2、存在 一种简单情景,可以使递归在简单情境下退出。
比如回文问题,如果首尾字符相同,则删除首尾字符,继续比较,问题规模缩小了,同时,当字符串长度为1或者0的时候,此时的字符串肯定是回文的,即满足条件2。
- #include<stdio.h>
-
#include<stdlib.h>
-
-
int is_palindrome(char *para_str, int len);
-
-
int main(int argc, char *argv[])
-
{
-
int n = atoi(argv[2]);
-
if(is_palindrome(argv[1], n))
-
printf("This string is palindrome!\n");
-
return 0;
-
}
-
-
int is_palindrome(char *para_str, int len)
-
{
-
if(len == 0 || len == 1)
-
return 1;
-
else
-
return (para_str[0] == para_str[len-1] ? is_palindrome(para_str+1, len-2) : 0);
-
}
阅读(1686) | 评论(0) | 转发(0) |