1. 程式人生 > >多項式計算-C語言遞迴實現

多項式計算-C語言遞迴實現

開始輸入多項式X的值和冪數,跟著輸入每項的係數,演算法通過遞迴實現X的n次方,最後返回多項式的值。這種演算法的好處是,所需的計算步驟只有傳統各項乘法的一半,利用了X^n=X^(n/2)*X^(n/2)的捷徑,所以不用每次都去乘以本身。

#include <stdio.h>
#include <stdlib.h>
long summation(int x,int n);
int main()
{
    int x,n,c=0;
    long sum=0;
    printf("Enter x and n:");
    scanf("%d %d",&x,&n);
    while(n>=0)
    {
        if(n>0)
        {
            printf("Enter the power %d 's co-efficiency:",n);
        }
        else
        {
            printf("Enter the constant term:");
        }
        scanf("%d",&c);
        sum+=c*summation(x,n);
        n--;
    }
    printf("%ld",sum);
    return 0;
}
long summation(int x,int n)
{
    long power;
    if(n==0)
    {
        return 1;
    }
    else
    {
       if(n%2==0)
       {
           power=summation(x,n/2)*summation(x,n/2);
       }
       else
       {
           power=x*summation(x,(n-1)/2)*summation(x,(n-1)/2);
       }
    }
    return power;
}