c++ - 函数返回看似随机的数字,而不是返回变量的值

标签 c++ algorithm function

所以,我正在编写这个简单的代码(完成后,它应该计算 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/

相关文章:

c++ - Qt:QFuture/QtConcurrent超时函数调用

arrays - 如何输出 B 的排列,使得 A 是一个摆动的?

c++ - 用户定义函数的返回值有问题

function - Scilab:optim 函数源文件位于何处

java - 为了对对象进行排序,什么必须为真?

javascript - 如何使 jQuery 表格单元格 (td) 可单击以运行函数?

c++ - 从 std::array 获取对原始数组的引用

c++ - 如何在没有临时变量的情况下传递指向整数的指针?

c++ - 实现优先队列

java - 使用非递归排序阈值的合并排序