VSS代码中的代码运行器能够运行我的代码,并且可以正常运行,但是存在问题代码,vratiRez功能。我不明白这个问题,它说:应该是“;”。
#include <stdio.h>
#include <math.h>
static int vratiRez(float);
int main(void)
{
float x_0, x_1, a_0, a_1;
float n;
float c1, c2;
int rez1;
c2 = (((a_0) * (x_0)) - a_1) / (x_0 - x_1);
c1 = a_0 - c2;
rez1 = (int)(c1 * (powf(x_0, n)) + c2 * (powf(x_1, n)));
int vratiRez(float n)
{
if (n == 0)
return a_0;
if (n == 1)
return a_1;
return (((x_1 + x_0) * vratiRez(n - 1)) - ((x_0) * (x_1)*vratiRez(n - 2)));
}
printf("Vrijednost n-tog clana niza pomocu formule: %d\n", rez1);
printf("Vrijednost n-tog clana niza iz rekurzije: %d", vratiRez(n));
return 0;
}
有人看到这个问题了吗?
问题是您试图在vratiRez
的正文中定义main
的正文-C不允许这样的嵌套函数定义。您需要将函数定义移到main
的主体之外:
static int vratiRez(float n)
{
if (n == 0)
return a_0;
if (n == 1)
return a_1;
return (((x_1 + x_0) * vratiRez(n - 1)) - ((x_0) * (x_1)*vratiRez(n - 2)));
}
int main(void)
{
float x_0, x_1, a_0, a_1;
float n;
float c1, c2;
int rez1;
c2 = (((a_0) * (x_0)) - a_1) / (x_0 - x_1);
c1 = a_0 - c2; rez1 = (int)(c1 * (powf(x_0, n)) + c2 * (powf(x_1, n)));
printf("Vrijednost n-tog clana niza pomocu formule: %d\n", rez1);
printf("Vrijednost n-tog clana niza iz rekurzije: %d", vratiRez(n));
return 0;
}