gpt4 book ai didi

c - 为什么递归函数在返回时取最新值?

转载 作者:行者123 更新时间:2023-11-30 18:38:46 26 4
gpt4 key购买 nike

#include<stdio.h>
int fun(int ,int);
main()
{
int res;
res=fun(2,4);
printf("in main() res=%d\n",res);
}
int fun(int x,int n)
{
int val=1;
val=1;
if(n>0)
{
if(n%2==1)
val=val*x;
val=val*fun(x*x,n/2);
}
}

我中间我得到 val=16,当 val=val*x 执行时,但在返回时它不采用该值?为什么它在返回时获取该变量的最新值?

最佳答案

but while returning its not taking that value ??

这是因为,您没有从 fun() 返回 val。编译器应该向您发出警告,除非关闭编译器警告。

您需要将 return 语句添加到声明为返回整数的 func 中。另外,你似乎每次都会重置 Val。我不确定你打算做什么。

代码看起来像

int fun(int x,int n)
{
int val=1;
//val=1; // WhY do you need this? this will reset Val everytime

if(n) //n>0 is not required as if evaluates to true if it is not zero
{
if(n%2==1)
val=val*x;
val=val*fun(x*x,n/2);
}
return val;
}

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

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