用遞迴實現多項式求解
阿新 • • 發佈:2020-12-29
(如有不對請評論指出)
以下求解採用秦九韶演算法
正常遞迴
#include<stdio.h>
int b=0;
double f(int x,float z)
{
int a;//a是係數
float sum;
printf("請輸入第%d的係數:",b++);
scanf("%d",&a);
if(x==0)
return a;
else
return sum=a+f(x-1,z)*z;
}
void main()
{
int m,n;//m為最高次
float x;
printf ("請輸入最高次和x的值:");
scanf("%d %f",&m,&x);
printf("%lf",f(m,x));
}
尾遞迴
#include<stdio.h>
double f(int x,int y,float z)
{
int a;//a是係數
float sum;
if(x-1>=0)
{
printf("請輸入第%d的係數:",x-1);
scanf("%d",&a);
}
if(x==0)
return y;
else
return f(x-1,y*z+a,z);
}
void main()
{
int m,n;//m為最高次
float x;
printf("請輸入最高次和其係數和x的值:");
scanf("%d %d %f",&m,&n,&x);
printf("%lf",f(m,n,x));
}