| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:有关递归函数的,不是很懂,帮个忙!!!!!
只看楼主 加入收藏
hackerStar
Rank: 2
来 自:厦门
等 级:禁止访问
帖 子:66
专家分:71
注 册:2009-10-29
结帖率:85.71%
收藏
 问题点数:0 回复次数:8 
有关递归函数的,不是很懂,帮个忙!!!!!
编写一个测试一个串是否为回文的递归函数?回文就是正读和反读都一样,比如“abcba”,"otto"

帮个忙,帮小弟写部分代码
搜索更多相关主题的帖子: 函数 递归 
2009-10-30 08:27
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:0 
用递归的,这个不懂写,不过我不是用递归的,写了个,希望对你有帮助:
#include<stdio.h>
#include<string.h>
void main()
{
    char p[255];
    int len,i;
    bool tp=true;
    scanf("%s",p);
    len=strlen(p);
    for(i=0;i<len;i++)
    {
        if((*(p+i))!=(*(p+len-i-1)))
        {
            tp=false;
            break;
        }
    }
    if(tp)
    {printf("%s 是回文\n",p);}
    else
    {printf("%s 不是回文\n",p);}
 
}

顺境逆境切莫止境,得意失意切莫在意。
2009-10-30 09:12
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:0 
写了个递归的..

#include <stdio.h>
#include <string.h>
 
int judge(char str[],int len)
{
 if(1==len) return 1;
 if(str[0]==str[len-1])  
   judge(&str[1],len-2);
   else return 0;
}
 
int main()
{
 char str[100];
 int len;
 while(gets(str))
 {
  len=strlen(str);
  if(judge(str,len)) printf("Yes!!\n");
    else printf("No!!\n");
 }  
 return 0;
}
2009-10-30 09:36
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
楼上程序如输入:123321 偶数的判断不出回文,函数len还少个判断0的。

努力—前进—变老—退休—入土
2009-10-30 10:11
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:0 
以下是引用UserYuH在2009-10-30 10:11:59的发言:

楼上程序如输入:123321 偶数的判断不出回文,函数len还少个判断0的。
你说的对,把这句改一下把.

if(1==len) return 1;  ==>if(len<=1) return 1;

但不知为什么,我的GCC编译器在原来的程序上输入123321出来的是Yes!!

我晕...

2009-10-30 10:42
蓝色药剂
Rank: 4
等 级:业余侠客
帖 子:43
专家分:204
注 册:2007-11-24
收藏
得分:0 
我在gcc4.2.4下编译的,很郁闷的是本来是用bool类型作函数返回值的,结果报出错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘isHuiWen’;这个原因还没仔细查,现在函数改成返回int了,编译就没有问题了

程序代码:
#include <stdio.h>
#include <string.h>
int isHuiWen(char ch[],int istart,int iend)
{
    if(iend<=istart)
        return 1;
    else
    {
        if(ch[istart]==ch[iend])
            return isHuiWen(ch,istart+1,iend-1);
        else
            return 0;
    }
}
int main()
{
    char ch[1024];
    printf("Input HuiWen");
    scanf("%s",ch);
    if(isHuiWen(ch,0,strlen(ch)-1))
        printf("yes\n");
    else
        printf("no\n");
    return 0;
}

2009-10-30 11:12
hackerStar
Rank: 2
来 自:厦门
等 级:禁止访问
帖 子:66
专家分:71
注 册:2009-10-29
收藏
得分:0 
你们的数据结构与算法学的怎么样?

-------------->>>>>信仰火之意识,崇拜黑客精神<<<<<--------------------
2009-10-30 12:01
helloweilin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-10-31
收藏
得分:0 
#include <iostream>

int isHuiWen(char* str)
{
    int left,right;
   
    if(NULL == str)
        return 0;

    left = 0;
    right = strlen(str) -1;
   
    while(
           (*(str+left) == *(str+right))
           && (left <= right)
          )
    {
        ++left;
        --right;         
    }
   
   
    if(left >= right)
       return 1;
    else
       return 0;
}

void TestMessage(char* str, int iResult)
{
     if(NULL == str)
     {
         std::cout<<"字符串为空。"<<std::endl;        
     }
     else
     {        
         std::cout<<str<<" == "<<((1 == iResult)?"true":"false")<<std::endl;         
     }
}

int main(void)
{
    char* str0 = "ABCDCBA";
    TestMessage(str0,isHuiWen(str0));

    char* str1 = "ABCCBA";
    TestMessage(str1,isHuiWen(str1));

    char* str2 = "ABCDCBa";
    TestMessage(str2,isHuiWen(str2));
   
    char* str3 = "ABCCbA";
    TestMessage(str3,isHuiWen(str3));
   
    char* str4 = "";
    TestMessage(str4,isHuiWen(str4));
   
    char* str5 = NULL;
    TestMessage(str5,isHuiWen(str5));
   
    char* str6 = "A";
    TestMessage(str6,isHuiWen(str6));
               
    getchar();
    return 0;   
}
2009-11-01 04:12
helloweilin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-10-31
收藏
得分:0 
没有写注释
2009-11-01 04:13
快速回复:有关递归函数的,不是很懂,帮个忙!!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016230 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved