递归中多个return只返回一个return吗,需要多个return怎么解决?

使用递归的方法完成函数int check(int value, int number),它判断一个数number各位相加是否等于value,如果是则返回1,否则返回0.

使用函数代码:

int sum = 0;
int check(int value, int number)
{
    
    if (number<10)
    {
        return number;
    }
    else
    {
         sum= number % 10 + check(value, number / 10);
        return sum;
    }


    if (sum==value)
    {
        return 1;
    }
    else
    {
        return 0;
    }

    
}

 

    if (sum==value)

    {

        return 1;

    }

    else

    {

        return 0;

    }

这个代码不应该放到递归的函数中,应该是:

 

#include <stdio.h>

int cp(int number)
{
    int sum;
    if (number<10)
    {
        return number;
    }
    else
    {
        sum= number % 10 + cp(number / 10);
        return sum;
    }
}


int check(int value, int number)
{
    if (cp(number)==value)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

void main()
{
    int n;
    printf("%d\n",check(22,5746));
}

 

return当然只能有一个返回了,想返回多个值,可以用指针或引用类型参数,通过参数返回

需要多个return 用全局变量。

return 代表这个方法执行完毕,要想返回多个值,返回个对象,对象包含多个属性值。

同楼上,给你个示例

int sum = 0;
int check(int value, int number)
{
    return {

         sum:number<10?number:number % 10 + check(value, number / 10),

         flag:sum==value?1:0

    }
}

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632