所以,我正在编写这个简单的代码(完成后,它应该计算 n 个多项式的值,每个多项式的值是 n 个点。我也不能使用循环,我应该在递归函数中做这些事情 -但还没有完成,而且该主题与我的问题无关)。
所以,到目前为止的代码是:
#include <iostream>
#include <cmath>
using namespace std;
void wypisz(int i, int k, int* c)
{
if (i<k) cout<<*(c+i)<<" ";
else return;
i++;
wypisz(i,k,c);
}
void podaj(int i, int k, int* c)
{
if (i<k) cin>>*(c+i);
else return;
i++;
podaj(i,k,c);
}
int wynik (int i, int k, int* c, int su, int mn)
{
int y;
if (i<k) {
cin>>y;
su+=y*mn;
mn*=*c;
}
else {cout<<su<<endl; return su;}
i++;
wynik (i, k, c, su, mn);
}
int main(){
int m,n,r;
cin>>m;
int tab[m];
podaj(0,m,tab);
wypisz(0,m,tab);
cin>>r;
cout<<wynik(0,r,tab,0,1);
system("PAUSE");
return 0;
}
它很好地计算了第一个点中的第一个多项式,但仅在函数中。调用时
cout<<su;
在终止 wynik() 函数之前,它给出正确的值,但是在调用时
cout<<wynik(0,r,tab,0,1);
在 main() 中,它给出了更高的、看似随机的值。
谁能告诉我为什么?
提前致谢:)
最佳答案
在您的 wynik
函数中,进行递归时,您并没有完全返回计算值...您应该更改最后一行:
wynik (i, k, c, su, mn);
至
return wynik(i, k, c, su, mn);
或者,更好的是,更改整个函数,使其看起来更清晰:
int wynik (int i, int k, int* c, int su, int mn)
{
int y;
if (i<k) {
cin>>y;
su+=y*mn;
mn*=*c;
return wynik (++i, k, c, su, mn);
}
else return su;
}
关于c++ - 函数返回看似随机的数字,而不是返回变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20133458/