函数返回的值与 case (相同变量)不同。它遵循问题“C Multiple Func() printf - 没有原因”

问题描述 投票:0回答:1

这是C中的递归函数(函数调用本身),主要情况是: 并返回变量“i”的值,该值必须为 6,但如所解释的那样为 1:

if(i==6){return i;} 但是返回的值是 1 而不是 6... 注意 i 必须 == 6 才能执行 返回...


这是代码:

#include<stdio.h>

int func1(int i){
    
    if(i == 6) {  // Base Case
        printf("\nEnd1");
        return i;
    }
        
    printf("%d ", i);
    func1(i + 1);
    // printf("\nEnd1");
    return i;
    
}

int main()
{
    printf("\n%d", func1(1));
    return 0;
}

我收到 1 作为我的值,而不是 6。

这是我的输出: 1 2 3 4 5 结束1 1

预期输出: 1 2 3 4 5 结束1 6

不知道该把头扔到哪里...

有什么解决办法吗?

以下链接打开新网站页面点击这里↗🌐查看代码运行情况。


(这个问题遵循“C Multiple Func() printf - With no Reason”中的问题。

c function loops recursion output
1个回答
0
投票

函数的第一次递归调用得到值1

printf("\n%d", func1(1));

并且该值在函数调用中不会被更改

int func1(int i){
    
    if(i == 6) {  // Base Case
        printf("\nEnd1");
        return i;
    }
        
    printf("%d ", i);
    func1(i + 1);
    // printf("\nEnd1");
    return i;
    ^^^^^^^^^
    
}

该函数的代码片段返回的值

    if(i == 6) {  // Base Case
        printf("\nEnd1");
        return i;
    }

无处使用。

尝试改变这些说法

    func1(i + 1);

到 我 = func1(i + 1);

© www.soinside.com 2019 - 2024. All rights reserved.