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)-函数指针相关推荐

  1. C++知识点10——函数指针

    函数指针就是指向函数的指针,和其他指针一样,函数指针也有类型 函数指针的类型由函数的返回值和函数的形参共同决定,与函数名无关,因为只是个名字 比如,函数的声明如下: int funcpointer(d ...

  2. 函数指针、函数指针数组,函数指针数组的指针

    数组指针 概念:数组指针是指针,只要是指针他就占4个字节: 例如: 整形指针:int *p;能够指向整形数据的指针 浮点型指针:float *p;能够指向浮点型的数据的指针 那么数组指针,同样的理解就 ...

  3. C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策

    一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...

  4. C语言基础10——指针进阶。字符指针、指针数组、数组指针、函数指针、函数指针数组、回调函数、数组名详解、杨氏矩阵、字符串旋转

    目录 字符指针 指针数组 数组指针 数组传参.指针参数 函数指针 函数指针数组 指向函数指针数组的指针 回调函数 练习 数组名的意义 指针笔试题 字符指针 字符指针的另一种使用方式 #include ...

  5. 函数指针amp;绑定: boost::functoin/std::function/bind

    see link: https://isocpp.org/wiki/faq/pointers-to-members function vs template: http://stackoverflow ...

  6. 0709 C语言常见误区----------函数指针问题

    1.函数指针的定义 对于函数 void test(int a, int b){ // } 其函数指针类型是void (* ) (int , int), 注意这里第一个括号不能少, 定义一个函数指针,v ...

  7. 函数指针--Nginx和Redis中两种回调函数写法

    1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...

  8. 结构体中定义函数指针

    结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;- }; struct 结构体标识符 *指针变量名; 变量初始化 ...

  9. C++中函数指针的使用

    A function pointer is a variable that stores the address of a function that can later be called thro ...

最新文章

  1. [原创]Javascript类成员的作用域
  2. vim复制内容到系统剪贴板
  3. Mallet机器语言工具包-入门测试
  4. 1.1 为什么需要 ML 策略-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  5. 如何实现Spark on Kubernetes?
  6. 英语自动提取高频词_斑马英语提分营免费体验课
  7. sql如何处理null值_如何正确处理SQL中的NULL值
  8. HTML5清爽简洁外贸网站模板
  9. spring aop 会根据实际情况(有无接口)自动选择 两种 动态代理(jdk和cglib)之一...
  10. Nowcoder farm ( 树状数组、二维前缀和、二维偏序 )
  11. 追踪研读法破解EZ-USB的“远程唤醒”
  12. c语言程序如何防止盗用,如何用C语言程序盗取QQ密码
  13. 如何连接新浪sae共享数据库
  14. Java开发岗:本硕211毕业一年,大厂面试最终拿下美团offer!献上我的面经+Java核心知识点(秋招适用)
  15. 因为1024图片 AppIcon 图标包含了透明度导致app上传ios 代码报错
  16. 常用数学符号英文名字
  17. 在kubernetes集群用helm离线安装harbor
  18. STM32CubeMX和keil实现led灯的点亮
  19. 米拓5.3 mysql支持off,Metinfo 5.3.17 前台SQL注入漏洞分析
  20. Origin 中做图超出页面的调整办法

热门文章

  1. mac 安装配置java环境变量
  2. 继承“HibernateDaoSupport”后,报“The hierarchy of the type AccoutDaoImpl is inconsistent”的解决方案...
  3. Linux下磁盘监控及系统版本-CPU-内存等查看
  4. css3的新特性transform,transition,animation
  5. 网页设计界面 电脑版设计
  6. java字符串的课后作业
  7. 一致性hash 简单实现
  8. 把Eclipse项目转换成Maven项目
  9. MYECLIPSE中快速解决项目的错误的方法
  10. java多线程总结五:线程池的原理及实现