霍纳规则(C/C++,Scheme)
来源:互联网 发布:mac装双系统的利弊 编辑:程序博客网 时间:2024/05/16 11:17
一、背景
霍纳(Horner)规则是采用最少的乘法运算策略,来求多项式
在x0处的值。
该规则为
二、分析
如果光看着式子或许会有点烦躁,不妨手动设定几个值到式子中去来手工运算一番,这样一来也会有些亲身的理解。
通过分解我们注意到,从右往左来看,每一个小式子都是如此:
三、代码
C语言版
#include <stdio.h>#include <stdlib.h>int hornerRule(int list[],int m,int x0);int main(){ int m,x0; printf("Enter an integer (length of list): \n"); scanf("%d",&m); int list[m]; printf("Enter some integers for list: \n"); int i; for(i=m-1;i>=0;i--) { scanf("%d",&list[i]); } printf("Enter an integer for x0: \n"); scanf("%d",&x0); printf("%d",hornerRule(list,m,x0)); return 0;}int hornerRule(int list[],int m,int x0){ if(m<=1) return list[0]; else return list[0]+(hornerRule(list+1,m-1,x0))*x0;}
C++语言版
#include <iostream>using namespace std;int hornerRule(int list[],int m,int x0);int main(){ int m,x0; cout<<"Enter an integer (length of list):"<<endl; cin>>m; int list[m]; cout<<"Enter some integers for list:"<<endl; for(int i=m-1;i>=0;i--) { cin>>list[i]; } cout<<"Enter an integer for x0:"<<endl; cin>>x0; cout<<hornerRule(list,m,x0); return 0;}int hornerRule(int list[],int m,int x0){ if(m<=1) return list[0]; else return list[0]+(hornerRule(list+1,m-1,x0))*x0;}
四、测试
五、进阶
(PS:博主有一段时间没有碰Scheme有点忘了,所以下面的代码可能有些……粗糙)
关于Scheme可以看这里:
专栏:SICP练习
专栏:Scheme归纳
(define (Horner list m x0) (define (Horner-iter ls n) (if (<= n 1) (car ls) (+ (car ls) (* (Horner-iter (cdr ls) (- n 1)) x0)))) (Horner-iter list m))(define list '(1 2 1 0 3 1));Value: list(Horner list 6 10);Value: 130121
为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp
7 0
- 霍纳规则(C/C++,Scheme)
- 斐波那契数(C/C++,Scheme)
- C++(-)命名规则
- C语言设计---scheme表示
- C规则
- Scheme学习系列二:调用C代码
- 数据结构(C语言版)课后习题1.2霍纳规则
- C++/C变量命名规则
- 软件工程之命名规则(C)
- 版本规则(收费版-C店)
- C#中的规则表达式
- C#中的规则表达式
- C 规则表达式入门
- C#中的规则表达式
- C语言命名规则
- C 规则表达式入门
- C/C++命名规则
- C/C++命名规则
- 我的第一篇博客
- IplImage中的widthStep大小计算及原理
- 黑马程序员_Java基础_多线程
- UIWebView的三种加载方式
- Java读书笔记01 编译和运行Java程序
- 霍纳规则(C/C++,Scheme)
- 2D画图 & CGContextRef 常用的函数和方法
- CGPonit,CGSize,CGRect
- 2010年山东省第一届ACM大学生程序设计竞赛——Clockwise
- 运动估计——块匹配算法
- [BZOJ1305]CQOI2009跳舞|最大流判定
- 刘强东哈佛演讲:解决一个问题,创业就能成功
- C++虚基类的实现机制
- UVa 10534 - Wavio Sequence (最长上升子序列LIS)