gpt4 book ai didi

c - 为什么我的递归函数的返回值出错

转载 作者:行者123 更新时间:2023-11-30 19:51:08 25 4
gpt4 key购买 nike

我的函数获取一个字符数组、大小、当前位置和计数器。
我需要它以输入的尺寸长度打印 A、B、C 的所有可能组合(无 AA 和 CCC)。
当 size 大于 3 时,函数的值返回一个不合理的值,但我没有找到原因。

int abc(char arr[],int lastPlace,int curPlace,int count){
if (curPlace == lastPlace){
arr[curPlace] = '\0';
printf("%s, ", arr);
return 1;
}
if(!curPlace || arr[curPlace - 1] != 'A'){
arr[curPlace] = 'A';
count += abc(arr, lastPlace, curPlace + 1, 0);
}
arr[curPlace] = 'B';
count += abc(arr, lastPlace, curPlace + 1, 0);
if(curPlace < 2 || arr[curPlace - 1] != 'C' || arr[curPlace - 2] != 'C'){
arr[curPlace] = 'C';
count+=abc(arr, lastPlace, curPlace + 1, 0);
if (curPlace == 0)
return count;
}
}

最佳答案

int abc(char arr[], int lastPlace, int curPlace, int count) 
{
if (curPlace == lastPlace)
{
arr[curPlace] = '\0';
printf("%s, ", arr);
return 1;
}
if(!curPlace || arr[curPlace-1]!='A'){
arr[curPlace] = 'A';
count += abc(arr, lastPlace, curPlace + 1, 0);
}

arr[curPlace] = 'B';
count += abc(arr, lastPlace, curPlace + 1, 0);

if(curPlace < 2 || arr[curPlace - 1] != 'C' || arr[curPlace - 2] != 'C')
{
arr[curPlace] = 'C';
count += abc(arr, lastPlace, curPlace + 1, 0);
}
return count;
}

关于c - 为什么我的递归函数的返回值出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50371784/

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