递归式函数

  在java中,函数递归是会报编译错误的。比如我定义一个斐波那契函数:

public class RecursiveFunction {public static void main(String[] args) {fibonacci = x -> x < 3 ? 1 : fibonacci.apply(x - 1) + fibonacci.apply(x - 2);}
}

  它就报了这个错:

java: 可能尚未初始化变量fibonacci

解决办法

  只需要将函数提升为类属性或者静态属性就可以了。这是非静态属性的例子:

public class RecursiveFunction {private Function<Integer, Integer> fibonacci;public RecursiveFunction() {fibonacci = x -> x < 3 ? 1 : fibonacci.apply(x - 1) + fibonacci.apply(x - 2);}public static void main(String[] args) {RecursiveFunction function = new RecursiveFunction();System.out.println(function.fibonacci.apply(6));}
}

  这是静态属性的例子:

public class RecursiveFunctions {private static Function<Integer, Integer> fibonacci;static  {fibonacci = x -> x < 3 ? 1 : fibonacci.apply(x - 1) + fibonacci.apply(x - 2);}public static void main(String[] args) {System.out.println(fibonacci.apply(6));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-三大分类

软件七大设计原则 1、单一职责 定义&#xff1a;每个类应该只有一个引起它变化的原因。 解释&#xff1a;一个类只负责一个功能&#xff0c;这样可以减少类之间的耦合&#xff0c;提高系统的可维护性和可扩展性。 2、开闭原则 定义&#xff1a;软件实体&#xff08;类、模块…

使用Dockerfile构建镜像

通过基础镜像 centos:7&#xff0c;在该镜像中安装 jdk 和 tomcat 以后将其制作为一个新的镜像 mscentos:7 创建目录 mkdir -p /kong/docker/dockerfile编写 Dockerfile 文件 vim DockerfileDockerfile 文件内容如下&#xff1a; # 指明构建的新镜像是来自于 centos:7 基础…

广义可加模型和光滑曲线拟合的R代码

&#x1f3c6;本文收录于《CSDN问答解答》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

jvm-并发-java基础-数据结构小测

这篇文章是一些练习题&#xff0c;答案后续更新。 请简述银行家算法 请简述死锁产生的条件 解决死锁的几种方式 简述synchronized锁的膨胀 什么是cas cas 的问题如何解决 jmm 简单理解 volatile 单例模式 线程安全的两种代码 懒汉&恶汉 线程池的7个参数分别是什么…

ABAQUS细观混凝土周期性边界(PBC)表征体元(REV)界面层(ITZ)及砂浆塑性损伤(CDP)模拟

混凝土的细观结构决定着其宏观破坏行为&#xff0c;对混凝土在结构尺度上采用细观模型将导致巨大的计算量而难以实现&#xff0c;表征体元&#xff08;‌REV&#xff09;‌方法可选取一定的平均范围来描述混凝土的性质和行为&#xff0c;这对于理解和模拟混凝土的损伤机理至关重…

构建高可用应用的设计模式与实践

高可用性&#xff08;High Availability, HA&#xff09;是现代分布式系统中必不可少的特性之一。高可用应用能够在面对系统故障、网络分区或资源压力等多种情况下&#xff0c;依然保证服务的连续性和稳定性。本文将介绍构建高可用应用的常见设计模式与实践&#xff0c;并提供J…

测试用例的设计方法

等价类 等价类概念&#xff1a;在所有测试的数据中&#xff0c;具有某种共同特征的数据子集 边界值 边界值分析是对程序输入或输出的边界值进行测试的一种黑盒测试方法 边界值是作为等价类的补充&#xff0c;其主要区别是&#xff1a; 边界值测试设计不是从某一个等价类中…

nacos注释配置未生效?

遇到的问题 Nacos中修改配置将配置的key 的注释&#xff0c;配置未发生变更问题 NacosValueAnnotationBeanPostPorcessor中有&#xff0c;获取key&#xff0c;是获取的所有注解上的值&#xff0c;而values是enviroment中的属性值 当我们注释掉nacos中的属性时&#xff0c;ke…

15. 【C++】详解搜索二叉树 | KV模型

目录 1.定义 初始化 插入 查找 删除 完整代码 2.运用 K 模型和 KV 模型详解 K 模型 KV 模型 代码解释 为了更好地理解 map 和 set 的特性&#xff0c;和后面讲解查找效率极高的平衡搜索二叉树&#xff0c;和红黑树去实现模拟&#xff0c;所以决定在这里对搜索二叉树…

Google资深工程师深度讲解Go语言-课程笔记

课程目录&#xff1a; 第1章 课程介绍 欢迎大家来到深度讲解Go语言的课堂。本课程将从基本语法讲起&#xff0c;逐渐深入&#xff0c;帮助同学深度理解Go语言面向接口&#xff0c;函数式编程&#xff0c;错误处理&#xff0c;测试&#xff0c;并行计算等元素&#xff0c;并带…

(vue)Vue读取public中的json文件,打包后只需更改包文件

(vue)Vue读取public中的json文件,打包后只需更改包文件 背景&#xff1a;增加账号需求。原本是在页面&#xff0c;每次都需技术人员添加再打包部署&#xff0c;现在放到json里&#xff0c;以后直接服务器改json就行。 旧版&#xff1a; let userArr [{username:aaa,password:…

VLAN 划分案例详解

vlan 的应用在网络项目中是非常广泛的&#xff0c;基本上大部分的项目都需要划分 vlan&#xff0c;这里从基础的 vlan 的知识开始&#xff0c;了解 vlan 的划分原理。 为什么需要 vlan&#xff1a; 1、什么是 VLAN&#xff1f; VLAN&#xff08;Virtual LAN&#xff09;&…

springboot 之 使用easyexcel导出数据时数据格式转换问题

背景 导出数据库中的数据&#xff0c;有些字段格式为LocalDateTime需要转化为String. 软件版本 springboot 2.7.17 easyexcel 3.0.5 代码 //实现相关接口&#xff0c;进行格式转化 import com.alibaba.excel.converters.Converter; import com.alibaba.excel.metadata.Globa…

Python数据分析实战:利用ARIMA模型洞察股市规律

在股市中&#xff0c;数据的波动与变化风云莫测&#xff0c;难以捉摸。然而&#xff0c;借助科学的分析方法和工具&#xff0c;我们或许能够找到一些数据规律。今天&#xff0c;我们聊聊如何使用Python编程语言&#xff0c;结合ARIMA模型来洞察股市的变幻&#xff0c;为我们的投…

精确控制Conda环境:使用conda install命令安装特定版本的包

精确控制Conda环境&#xff1a;使用conda install命令安装特定版本的包 在Python项目开发中&#xff0c;依赖管理是确保项目可复现性和稳定性的关键环节。Conda作为Anaconda发行版中的包管理器&#xff0c;提供了强大的依赖管理功能&#xff0c;允许用户安装和管理不同版本的包…

【TCP通信】

7.18学习记录 NetAssist.exeTCP/IP协议准备工作做好之后开始创建方案 通信架构设备管理接收事件发送事件心跳管理响应配置 VM4.0二次开发 NetAssist.exe 网络协议调试助手文件&#xff0c;支持UDP和TCP协议。只需要输入主机的地址和端口就能获取数据解析。要用到的协议是 TCP/…

wps office 2019 Pro Plus 集成序列号Vba安装版教程

前言 wps office 2019专业增强版含无云版是一款非常方便的办公软件&#xff0c;我们在日常的工作中总会碰到需要使用WPS的时候&#xff0c;它能为我们提供更好的文档编写帮助我们更好的去阅读PDF等多种格式的文档&#xff0c;使用起来非常的快捷方便。使用某银行专业增强版制作…

Python面试题:编写一个程序,实现一个简单的聊天机器人,主要的思路和方法是什么

编写一个简单的聊天机器人&#xff08;Chatbot&#xff09;&#xff0c;可以通过以下步骤和方法实现&#xff1a; 定义问题和回答的映射&#xff1a;设计一些常见问题及其对应的回答。接受用户输入&#xff1a;获取用户的输入并进行处理。匹配用户输入&#xff1a;根据用户的输…

生活中生智慧

【 圣人多过 小人无过 】 觉得自己做得不够才能做得更好&#xff0c;互相成全&#xff1b;反求诸己是致良知的第一步&#xff1b;有苦难才能超越自己&#xff0c;开胸怀和智慧&#xff1b;不浪费任何一次困苦&#xff0c;危机中寻找智慧&#xff0c;成长自己。 把困苦当作当下…

Linux——awk操作符

[rootlocalhost ~] # awk BEGIN{x2;y3;print x**y,x^y,x*y,x/y,xy,x-y,x%y} 8 8 6 0 .666667 5 -1 2 赋值运算符 条件运算符 awk 中的条件运算符只有一个&#xff0c;其语法如下&#xff1a; expression?value1:value2 这是一个三目运算符&#xff0c;当表达式 expre…