gpt4 book ai didi

C递归代码

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:01 24 4
gpt4 key购买 nike

<分区>

我需要帮助来理解使用递归的这段代码。

    int power(int n1,int n2);
int main()
{
int base, exp;
printf("Enter base number: ");
scanf("%d",&base);
printf("Enter power number(positive integer): ");
scanf("%d",&exp);
printf("%d^%d = %d", base, exp, power(base, exp));
return 0;
}
int power(int base,int exp)
{
if ( exp!=1 )
return (base*power(base,exp-1));
}

代码工作正常,但我不明白为什么当 exp 为 1 时它仍然设法返回一个值,即使函数体中的条件计算为 false,所以我认为它不应该然后不返回任何东西。

例如,如果在 main() 函数中调用该函数,并且我将 51 的值分配给 baseexp,我希望我不应该得到返回值,因为 exp1 并且我的函数返回仅当 exp !=1 时才会发生某些事情,并且函数体中没有 else 部分来涵盖 exp 的情况1。我知道 C 在未指定返回值时返回垃圾值,但在这种情况下,它返回正确的答案,我测试了几次。例如,当我在主函数中使用 base=7exp=1 调用它时,它返回 7 作为我的答案,甚至其他“基础”值,它总是返回正确答案的基础。这正是我困惑的根源——当函数体的 IF 子句计算为 false 时,C 是如何设法返回正确答案给我的……我想我在这里遗漏了一些东西。

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