作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
#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/
我是一名优秀的程序员,十分优秀!