gpt4 book ai didi

C++ 2 嵌套for循环转换为递归

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

嗨,我想将此代码转换为递归函数:

int a3(int* a, int length) {
if(a == 0 || length <= 0) return 0;
int sum = 0;
for(int i = 0; i < length; i++) {
for(int j = i; j < length; j++) {
sum += a[j];
}
}
return sum;
}

我的方法是:

int rec_help(int*a, int length);

int a3(int* a, int length) {
if(a == 0 || length <= 0) return 0;
else{
return rec_help(a,length) + rec_help(a+1,length-1) ;
}
}

int rec_help(int*a, int length){
if(a == 0 || length <= 0) return 0;
else{
int tmp = a[0];
return tmp + a3(a+1,length-1);
}
}

但我没搞清楚。

使用 a3() 我想模拟第一个 for 循环,我认为这是我的问题:D

使用 rec_help() 第二个循环和主体,但我在这里混合了一些东西。

我将不胜感激任何形式的帮助:)

最佳答案

因为你有2个循环,如果你希望你的函数是递归的,你将需要2个递归函数,一个将完成第一个循环的工作,第二个将完成第二个循环的工作...

类似的东西应该有效:

int a3_rec(int *a, int length)
{
if (length == 0)
return (0);
return (*a + a3_rec(a + 1, length - 1));
}

int a3_rec_hat(int *a, int length)
{
if (a == 0 || length == 0)
return (0);
return (a3_rec(a, length) + a3_rec_hat(a + 1, length - 1));
}

希望对你有帮助:)

关于C++ 2 嵌套for循环转换为递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50888823/

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