gpt4 book ai didi

c++ - 这个递归函数(回文)变成了一个无限循环。为什么?

转载 作者:行者123 更新时间:2023-11-28 00:22:58 38 4
gpt4 key购买 nike

/* 但如果我将第 13 行更改为“else return palindrome(s,++f, --l);”然后代码运行良好。这是什么原因?*/

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int palindrome(char* s, int f, int l) // f = first index, l = last index;
{
if(f>=l) return 1;
else if(s[f]!=s[l]) return 0;
else return palindrome(s, f++,l--);
}

int main()
{
char a[100];

gets(a);
int len = strlen(a)-1;
printf("len: %d\n",len);
int b = 0;

if(palindrome(a, b , len))
{
printf("Plindrome\n");
}
else
{
printf("not palindrome\n");
}
}

最佳答案

签名

int palindrome(char* s, int f, int l)    

并呼吁

f = first index, l = last index;`

错了

++f/--l 在递归中没有效果,除非你打算将它作为引用参数传递:

 int palindrome(char* s, int& f, int& l)
// ^ ^ Add a reference, if you're intending to change
// the parameter value

关于c++ - 这个递归函数(回文)变成了一个无限循环。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26555564/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com