鱼C论坛

 找回密码
 立即注册
查看: 3066|回复: 1

请问为什么在电脑上秦九韶算法快不了多少啊?

[复制链接]
发表于 2019-9-5 17:58:19 | 显示全部楼层 |阅读模式
15鱼币
本帖最后由 sunnyrubik 于 2019-9-8 22:33 编辑

不是都说秦九韶比普通的写法快几倍吗?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

#define MAXK 1e8 //被测函数最大重复调用次数 

double f1(int n,double a[],double x);
double f2(int n,double a[],double x);//秦九韶算法 

clock_t start,stop;
double duration;

int main()
{
        int i;
        double a[9];
        
        for(i=0;i<10;i++)
        {
                a[i]=(double)i;
        }
         
        start = clock();
        for(i = 0;i < MAXK;i++)
        f1(9,a,1.1); 
        stop = clock();
        duration = ((double)(stop-start))/CLK_TCK/MAXK;//计算函数单次运行时间 
        printf("ticks1 = %f\n",(double)(stop-start));
        printf("duration = %6.2e\n",duration);
        
        start = clock();
        for(i = 0;i < MAXK;i++)
        f2(9,a,1.1);
        stop = clock();
        duration = ((double)(stop-start))/CLK_TCK/MAXK;
        printf("ticks2 = %f\n",(double)(stop-start));
        printf("duration = %6.2e\n",duration);
        
        return 0;
} 
 
double f1(int n,double a[],double x)
{
        int i;
        double p = a[0];
        for(i=1;i<=n;i++)
        {
                p += (a[i] * pow(x,i));
        }
        return p;
}

double f2(int n,double a[],double x)
{
        int i;
        double p = a[n];
        for(i=n;i>0;i--)
        {
                p = a[i-1] + x*p;
        }
        return p;
 } 

屏幕截图(186).png

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-8 17:29:53 | 显示全部楼层
本帖最后由 sunnyrubik 于 2019-9-8 17:31 编辑

已解决。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 21:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表