除夕之时祝大家新年快乐!!!还有个问题要问问

好学达人 2014-01-30 05:19:51

我下面的代码是递归吗?

#include<iostream>
#include<iomanip>
#include<string>
using namespace std;

bool testPalindrome ( char a[], int size );

int main()
{
char array[] = "a man a plan a canal panama";
int size = sizeof ( array );
bool k;

k = testPalindrome ( array, size );

if ( k )
cout << "字符串是回文" << endl;
else
cout << "字符串不是回文" << endl;

cout << endl;
return 0;
}

bool testPalindrome ( char a[], int size )
{
static int start = 0;
static int end = size - 2;

while ( ! ( a[ start ] > 65 && a[ start ] < 90 || a[ start ] > 97 && a[ start ] < 122 ) )
start++;
while ( ! ( a[ end ] > 97 && a[ end ] < 122 || a[ end ] > 65 && a[ end ] < 90 ) )
end--;

if ( a[ start ] == a[ end ] && start <= end )
{
start++;
end--;
testPalindrome ( a, size );

return true;
}
else
return false;
}
...全文
283 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
百曉生 2014-03-21
  • 打赏
  • 举报
回复
是递归! 这个帖子怎么还没结啊!!!有些lz就是不负责任啊!,发完一个帖,人就消失的无影无踪!,也没人管管
bgttff 2014-03-21
  • 打赏
  • 举报
回复
引用 12 楼 LEISIWEIWOAINI 的回复:
[quote=引用 11 楼 bgttff 的回复:] [quote=引用 10 楼 LEISIWEIWOAINI 的回复:] [quote=引用 9 楼 greex 的回复:] 是递归,这个出口要正确。另为什么有那么多的魔鬼数字。既然是回文为什么还要检查范围,算法不合理。优良的代码中不要写死任何限制。应是通用的,简洁的。
什么魔鬼数字 能解答一下吗?[/quote] 魔鬼数字就是你代码里面的65,90之类的,可以用宏来代替 另外,用了static变量,不能多线程[/quote] 多线程什么意思呢?[/quote] 这个你还是要去百度一下,或者读读操作系统方面的书~~
赵4老师 2014-02-17
  • 打赏
  • 举报
回复
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门! 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出
零度的折翅 2014-02-17
  • 打赏
  • 举报
回复
采用递归方法来解决问题,必须符合以下三个条件:   1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。   说明:解决问题的方法相同,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用。   2、可以应用这个转化过程使问题得到解决。   说明:使用其他的办法比较麻烦或很难解决,而使用递归的方法可以很好地解决问题。   3、必定要有一个明确的结束递归的条件。   说明:一定要能够在适当的地方结束递归调用。不然可能导致系统崩溃。
绿 2014-02-16
  • 打赏
  • 举报
回复
除了自己调用自己,A函数调用B函数,B函数调用A函数,也是递归。。
好学达人 2014-02-15
  • 打赏
  • 举报
回复
引用 11 楼 bgttff 的回复:
[quote=引用 10 楼 LEISIWEIWOAINI 的回复:] [quote=引用 9 楼 greex 的回复:] 是递归,这个出口要正确。另为什么有那么多的魔鬼数字。既然是回文为什么还要检查范围,算法不合理。优良的代码中不要写死任何限制。应是通用的,简洁的。
什么魔鬼数字 能解答一下吗?[/quote] 魔鬼数字就是你代码里面的65,90之类的,可以用宏来代替 另外,用了static变量,不能多线程[/quote] 多线程什么意思呢?
bgttff 2014-02-15
  • 打赏
  • 举报
回复
引用 10 楼 LEISIWEIWOAINI 的回复:
[quote=引用 9 楼 greex 的回复:] 是递归,这个出口要正确。另为什么有那么多的魔鬼数字。既然是回文为什么还要检查范围,算法不合理。优良的代码中不要写死任何限制。应是通用的,简洁的。
什么魔鬼数字 能解答一下吗?[/quote] 魔鬼数字就是你代码里面的65,90之类的,可以用宏来代替 另外,用了static变量,不能多线程
好学达人 2014-02-07
  • 打赏
  • 举报
回复
引用 9 楼 greex 的回复:
是递归,这个出口要正确。另为什么有那么多的魔鬼数字。既然是回文为什么还要检查范围,算法不合理。优良的代码中不要写死任何限制。应是通用的,简洁的。
什么魔鬼数字 能解答一下吗?
greex 2014-02-07
  • 打赏
  • 举报
回复
是递归,这个出口要正确。另为什么有那么多的魔鬼数字。既然是回文为什么还要检查范围,算法不合理。优良的代码中不要写死任何限制。应是通用的,简洁的。
  • 打赏
  • 举报
回复
是的。是递归。 楼主的精神值得学习。
u012723504 2014-02-06
  • 打赏
  • 举报
回复
调用本身,应该是的
Falleyes 2014-02-06
  • 打赏
  • 举报
回复
引用 4 楼 derekrose 的回复:
YYYYYYYYYYYYYYYYes!!
卖萌的版主
derekrose 2014-02-06
  • 打赏
  • 举报
回复
YYYYYYYYYYYYYYYYes!!
letingoo 2014-02-06
  • 打赏
  • 举报
回复
自己调用自己就是递归
匚匚 2014-01-30
  • 打赏
  • 举报
回复
自己调自己还有就是要有出口才行,否则就是死循环
Falleyes 2014-01-30
  • 打赏
  • 举报
回复
函数中自己调用自己就叫递归,楼主的这个是递归。

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧