rust(10)-函数指针
PS F:\learn\rustlearn> rustc learn1.rs
PS F:\learn\rustlearn> .\learn1.exe
0.6823278038280194
PS F:\learn\rustlearn>
函数是一等公民,函数可作为函数的参数和返回值使用。
如下面代码段所示
pub fn f_compute(com_fn:fn(f64)->f64,x:f64)->f64{com_fn(x)
}
完整代码如下:
use std::f64;
pub fn get_next_x(x0:f64,x1:f64)->f64{let res1=&f_compute(fn1,x1);let res0=&f_compute(fn1,x0);x1-res1*((x1-x0)/(res1-res0))
}
pub fn f_compute(com_fn:fn(f64)->f64,x:f64)->f64{com_fn(x)
}pub fn fn1(x:f64)->f64{x.powi(3)+x-1.0_f64
}fn main() {let tol=1e-8_f64;let x0=0.0_f64;let x1=4.0_f64;let mut x_i:f64=x1;let mut x_isub1:f64=x0;let mut x_iplus1:f64;let mut ans:f64=0.0_f64; let mut finished=false;for _n in 1..200 {x_iplus1=get_next_x(x_isub1,x_i);if (x_iplus1-x_i).abs()<tol { ans=x_iplus1;finished=true;break;} x_isub1=x_i;x_i=x_iplus1;}if finished{println!("{}",ans); }
}
use std::f64;
pub fn get_next_x(com_fn:fn(f64)->f64,x0:f64,x1:f64)->f64{let res1=&f_compute(com_fn,x1);let res0=&f_compute(com_fn,x0);x1-res1*((x1-x0)/(res1-res0))
}
pub fn f_compute(com_fn:fn(f64)->f64,x:f64)->f64{com_fn(x)
}pub fn fn1(x:f64)->f64{x.powi(3)+x-1.0_f64
}
pub fn fn2(x:f64)->f64{2.98*x.powi(3)-5.21*x.powi(2)-7.6_f64
}fn main() {let tol=1e-8_f64;let x0=0.0_f64;let x1=4.0_f64;let mut x_i:f64=x1;let mut x_isub1:f64=x0;let mut x_iplus1:f64;let mut ans:f64=0.0_f64; let mut finished=false;for _n in 1..500 {x_iplus1=get_next_x(fn1,x_isub1,x_i);if (x_iplus1-x_i).abs()<tol { ans=x_iplus1;finished=true;break;} x_isub1=x_i;x_i=x_iplus1;}if finished{println!("{}",ans); }x_i=x1;x_isub1=x0;ans=0.0_f64; finished=false;for _n in 1..200 {x_iplus1=get_next_x(fn2,x_isub1,x_i);if (x_iplus1-x_i).abs()<tol { ans=x_iplus1;finished=true;break;} x_isub1=x_i;x_i=x_iplus1;}if finished{println!("{}",ans); }
}
PS F:\learn\rustlearn> rustc learn1.rs
PS F:\learn\rustlearn> .\learn1.exe
0.6823278038280194
2.2514454804098265
PS F:\learn\rustlearn>
rust(10)-函数指针相关推荐
- C++知识点10——函数指针
函数指针就是指向函数的指针,和其他指针一样,函数指针也有类型 函数指针的类型由函数的返回值和函数的形参共同决定,与函数名无关,因为只是个名字 比如,函数的声明如下: int funcpointer(d ...
- 函数指针、函数指针数组,函数指针数组的指针
数组指针 概念:数组指针是指针,只要是指针他就占4个字节: 例如: 整形指针:int *p;能够指向整形数据的指针 浮点型指针:float *p;能够指向浮点型的数据的指针 那么数组指针,同样的理解就 ...
- C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策
一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...
- C语言基础10——指针进阶。字符指针、指针数组、数组指针、函数指针、函数指针数组、回调函数、数组名详解、杨氏矩阵、字符串旋转
目录 字符指针 指针数组 数组指针 数组传参.指针参数 函数指针 函数指针数组 指向函数指针数组的指针 回调函数 练习 数组名的意义 指针笔试题 字符指针 字符指针的另一种使用方式 #include ...
- 函数指针amp;绑定: boost::functoin/std::function/bind
see link: https://isocpp.org/wiki/faq/pointers-to-members function vs template: http://stackoverflow ...
- 0709 C语言常见误区----------函数指针问题
1.函数指针的定义 对于函数 void test(int a, int b){ // } 其函数指针类型是void (* ) (int , int), 注意这里第一个括号不能少, 定义一个函数指针,v ...
- 函数指针--Nginx和Redis中两种回调函数写法
1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...
- 结构体中定义函数指针
结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;- }; struct 结构体标识符 *指针变量名; 变量初始化 ...
- C++中函数指针的使用
A function pointer is a variable that stores the address of a function that can later be called thro ...
最新文章
- [原创]Javascript类成员的作用域
- vim复制内容到系统剪贴板
- Mallet机器语言工具包-入门测试
- 1.1 为什么需要 ML 策略-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
- 如何实现Spark on Kubernetes?
- 英语自动提取高频词_斑马英语提分营免费体验课
- sql如何处理null值_如何正确处理SQL中的NULL值
- HTML5清爽简洁外贸网站模板
- spring aop 会根据实际情况(有无接口)自动选择 两种 动态代理(jdk和cglib)之一...
- Nowcoder farm ( 树状数组、二维前缀和、二维偏序 )
- 追踪研读法破解EZ-USB的“远程唤醒”
- c语言程序如何防止盗用,如何用C语言程序盗取QQ密码
- 如何连接新浪sae共享数据库
- Java开发岗:本硕211毕业一年,大厂面试最终拿下美团offer!献上我的面经+Java核心知识点(秋招适用)
- 因为1024图片 AppIcon 图标包含了透明度导致app上传ios 代码报错
- 常用数学符号英文名字
- 在kubernetes集群用helm离线安装harbor
- STM32CubeMX和keil实现led灯的点亮
- 米拓5.3 mysql支持off,Metinfo 5.3.17 前台SQL注入漏洞分析
- Origin 中做图超出页面的调整办法
热门文章
- mac 安装配置java环境变量
- 继承“HibernateDaoSupport”后,报“The hierarchy of the type AccoutDaoImpl is inconsistent”的解决方案...
- Linux下磁盘监控及系统版本-CPU-内存等查看
- css3的新特性transform,transition,animation
- 网页设计界面 电脑版设计
- java字符串的课后作业
- 一致性hash 简单实现
- 把Eclipse项目转换成Maven项目
- MYECLIPSE中快速解决项目的错误的方法
- java多线程总结五:线程池的原理及实现