C语言编写【递归】函数,计算函数,内详

来源:百度知道 编辑:UC知道 时间:2024/06/15 05:29:52
题目如下,编写一段使用数组变量的递归函数,
完成以下,
P=(……(((a0x+a1)x+a2)x+a3)x+…+an)
——————————————————————————————————
原题如下,
An n_order polynomial can be evaluated as follows:
P=(……(((a0x+a1)x+a2)x+a3)x+…+an)
Write a function to evaluate the polynomial, using an array variable. Test it using a main program.
——————————————————————————————————
感谢。火速。加分。
谢谢啦。。我实在不会了。。。。

#include <stdio.h>
#include <malloc.h>

int array(int x, int n, int *a, int flag);

int main()
{
int n, x;
printf("input n: ");
scanf("%d%*c", &n);
printf("input a0~a%d: ", n - 1);
int *a = (int*)malloc(sizeof(int)*n);
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
printf("input x: ");
scanf("%d", &x);
int result = array(x, n, a, 0);
printf("%d\n", result);
}

int array(int x, int n, int *a, int flag)
{
if(n == 1)
return a[flag];
else
{
a[flag + 1] = a[flag] * x + a[flag + 1];
return array(x, n - 1, a, flag + 1);
}
}

a[i+1]=a[i]*X+a[i+1]

i=0~n-1循环即可。

P就等于a[n-1].

此法有两个问题:
一、原数组被破坏了,不知是否允许
二、数组不能a[n]这么定义啊,n必须是个确定的数。

你可以考虑下其他人的答案,我的仅供参考。

mark