gpt4 book ai didi

c - 在 C 中 return 不返回准确的值

转载 作者:行者123 更新时间:2023-11-30 21:45:04 24 4
gpt4 key购买 nike

我编写了这段具有递归函数不同的代码,当我使用 printf 语句运行它时,我注意到代码以正确的方向执行,并且我得到了 printf 语句在 diff 末尾打印的所需值函数,但该值不会立即返回,而是递归再次沿相反方向返回并返回错误值。我一直在努力调试它,但我不明白为什么它在执行最后一个 printf 语句后没有立即返回。请帮忙!!要运行,请输入:5 3 10 3 8 5 121 3作为输入

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

long long int df;

long long max(long long int a,long long int b)
{
long long int maxi;
maxi = a>b ? a:b;
return maxi;
}

long long min(long long int x,long long int y,long long int *a)
{
long long int mini;
mini = a[x]<a[y] ? (x+1):(y+1);
return mini;
}

long long differ(long long int n1,long long int n2,long long int *a,long long int k,long long int n)
{
long long int df,i;
df=a[n1-1]-a[n2-1];
df=abs(df);
printf("%lld\n",df);

if(df>k)
{
for(i=0;i<n;i++)
{
if(max(a[n1-1],a[n2-1])>a[i] && (max(a[n1-1],a[n2-1])-a[i])<=k)
{
printf("%lld %lld\n",a[i],a[min(n1-1,n2-1,a)-1]);
differ(i+1,min(n1-1,n2-1,a),a,k,n);
return df; //Even this does not work
}
}
}
printf("%lld 90909\n",df);/*This does print a required value but changes again and returns a wrong value finally.*/
return df;
}

int main()
{
long long int n,k,p,f1,f2,d=0,i,j;
scanf("%lld",&n);
long long int a[n];
scanf("%lld",&k);

scanf("%lld",&p);
for(i=0;i<n;i++)
{
scanf("%lld",&a[i]);
}
while(p-- > 0)
{
scanf("%lld",&f1);
scanf("%lld",&f2);
printf("%lld df\n",d);

d = differ(f1,f2,a,k,n);

printf("%lld diff",d);
if(d<=k)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}

return 0;
}

最佳答案

将递归函数赋值给df即可解决问题,即

df=differ(i+1,min(n1-1,n2-1,a,k,n);

希望它能帮助那些在递归过程中遇到这个小错误的人。

关于c - 在 C 中 return 不返回准确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24713071/

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