斐波那契数列(递归)&求100以内的素数
Java
5
添加了
java.util.Scanner
类,这是一个用于扫描输入文本的新的实用程序。它是以
前的
StringTokenizer
和
Matcher
类之间的某种结合。由于任何数据都必须通过同一模式的
捕获组检索或通过使用一个索引来检索文本的各个部分。于是可以结合使用正则表达式和从
输入流中检索特定类型数据项的方法。这样,除了能使用正则表达式之外,
Scann输入流中检索特定类型数据项的方法。这样,除了能使用正则表达式之外,
1.斐波那契数列
Java中Scanner类这是一个用于扫描输入文本的
可以使用该类创建一个对象
Scanner reader=new Scanner(System.in);
然后reader调用下面的方法,读取用户在命令行输入的各种类型的数据
package mianshiti;
import java.util.*;
import java.io.*;
public class fibonacci {
public static int k=0;
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);//Scanner类这是一个用于扫描输入文本的
long a=cin.nextLong();//将输入信息的下一个标记扫描为一个long
System.out.println(fibonacci(a));
System.out.println("共调用了"+k+"次");
}
public static long fibonacci(long m){
if(m==0|m==1){
k++;
return m;
}else{
return fibonacci(m-1)+fibonacci(m-2);
}
} }
递归的缺点:
会造成调用栈的溢出,因为需要为每一次函数调用在内存栈中分配空间,而每个进程的栈的容量是有限的。当递归调用层级太多时,就会超出栈的容量,从而导致调用栈溢出。
更简洁的方法:
可以直接从下往上算,首先根据f(0)和f(1)算出f(2),再根据f(1)和f(2)算出f(3),依次类推可以算出第n项f(n),时间复杂度是O(n)
public class Solution {
public int Fibonacci(int n) {
if(n==0){
return 0;
}
if(n==1){
return 1;
}
int numfn1=0;
int numfn2=1;
int currentfn=0;
for(int i=2;i<=n;i++){
currentfn=numfn1+numfn2;
numfn1=numfn2;
numfn2=currentfn;
}
return currentfn;
}
}
跳台阶:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:当前台阶的跳法总数=当前台阶后退一阶的台阶的跳法总数+当前台阶后退二阶的台阶的跳法总数
public class Solution {
public int JumpFloor(int target) {
if(target==2||target==1){
return target;
}
// 第一阶和第二阶考虑过了,初始当前台阶为第三阶,向后迭代
// 思路:当前台阶的跳法总数=当前台阶后退一阶的台阶的跳法总数+当前台阶后退二阶的台阶的跳法总数
int jumpSum=0;//当前台阶的跳法总数
int jumpSumBackStep1=2;//当前台阶后退一阶的台阶的跳法总数
int jumpSumBackStep2=1;//当前台阶后退二阶的台阶的跳法总数
for(int i=3;i<=target;i++){
jumpSum=jumpSumBackStep1+jumpSumBackStep2;
jumpSumBackStep2=jumpSumBackStep1;// 后退一阶在下一次迭代变为后退两阶
jumpSumBackStep1=jumpSum;// 当前台阶在下一次迭代变为后退一阶
}
return jumpSum;
}
}
矩形覆盖
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

| √ | |||||||
| √ |
| √ | √ | ||||||
| × | × |
public class Solution {
public int RectCover(int target) {
if (target < 1) {
return 0;
} else if (target == 1 || target == 2) {
return target;
} else {
return RectCover(target-1) + RectCover(target-2);
}
}
}
2.求100以内的素数
素数,是指在大于1的自然数中,除了1和它本身以外,不能被其他数整除的数。
合数,比1大但不是素数的。
1和0既非素数也非合数
如:2,3,5,7....
package mianshiti;
public class primenumber {
public static void main(String[] args) {
int n=0;//用来计算当前是第几个素数
for(int i=2;i<=100;i++){
if(isPrime(i)){
n++;
System.out.print(i+"\t");
if(n%10==0){//每10个数,换一次行
System.out.print("\n");
}
}
}
}
static boolean isPrime(int number){
for(int i=2;i<=Math.sqrt(number);i++){//用一个数除以其他数,只要除到这个数的根号Math.sqrt(number)就可以判断是否素数
if(number%i==0){
return false;
}
}
return true;
}
}
斐波那契数列(递归)&求100以内的素数的更多相关文章
- PHP算法之斐波那契数列(递归)
/*斐波那契数列 源代码分析 f(x) = 1 ; 当 x < 2 ; f(x) = f(x-1)+f(x-2); 当 x >= 2 ; 通项式为:fn ={((1+根号5)/2)^n-( ...
- python之斐波那契数列递归推导在性能方面的反思
在各种语言中,谈到递归首当其冲的是斐波那契数列,太典型了,简直就是标杆 一开始本人在学习递归也是如此,因为太符合逻辑了 后台在工作和学习中,不断反思递归真的就好嘛? 首先递归需要从后往前推导,所有数据 ...
- DP思想在斐波那契数列递归求解中的应用
斐波那契数列:1, 1, 2, 3, 5, 8, 13,...,即 f(n) = f(n-1) + f(n-2). 求第n个数的值. 方法一:迭代 public static int iterativ ...
- Reverse反转算法+斐波那契数列递归+Reverse反转单链表算法--C++实现
Reverse反转算法 #include <iostream> using namespace std; //交换的函数 void replaced(int &a,int & ...
- java递归 斐波那契数列递归与非递归实现
递归简单来说就是自己调用自己, 递归构造包括两个部分: 1.定义递归头:什么时候需要调用自身方法,如果没有头,将陷入死循环 2.递归体:调用自身方法干什么 递归是自己调用自己的方法,用条件来判断调用什 ...
- [剑指offer] 7. 斐波那契数列 (递归 时间复杂度)
简介: 杨辉三角每条斜线上的数之和就构成斐波那契数列. 思路: 参考文章:https://mp.weixin.qq.com/s?src=11×tamp=1551321876& ...
- 斐波那契数列 递归 尾递归 递推 C++实现
==================================声明================================== 本文原创,转载请注明作者和出处,并保证文章的完整性(包括本 ...
- [python]兔子问题,斐波那契数列 递归&非递归
假设一对幼年兔子需要一个月长成成年兔子,一对成年兔子一个月后每个月都可以繁衍出一对新的幼年兔子(即兔子诞生两个月后开始繁殖).不考虑死亡的情况,问第 N 个月时共有多少对兔子? 结果前几个月的兔子数量 ...
- 求前n项的斐波那契数列、求两个数的最小公倍数、求两个数的最大公约数
class Fib(object): def __call__(self,n): a=[0,1] for i in range(n-2): an ...
- 剑指offer-矩形覆盖-斐波那契数列(递归,递推)
class Solution { public: int rectCover(int number) { if(number==0 || number==1||number==2) return nu ...
随机推荐
- Java项目性能瓶颈定位
文章目标 当Java项目出现性能瓶颈的时候,通常先是对资源消耗做分析,包括CPU,文件IO,网络IO,内存:之后再结合相应工具查找消耗主体的程序代码.本文主要介绍系统资源消耗的分析过程,以及常用的Ja ...
- 爬虫技术框架——Heritrix
Heritrix是一个由Java开发的开源Web爬虫系统,用来获取完整的.精确的站点内容的深度复制, 具有强大的可扩展性,运行开发者任意选择或扩展各个组件,实现特定的抓取逻辑. 一.Heritrix介 ...
- C盘空间太大,分区助手减小分区大小教程
首先看一个需要缩小C盘或需要减少分区空间的一个例子:“我的电脑里C盘剩余空间为530GB,除了C盘外还有一个D盘,但D盘的空间不到30GB,另外还有两个隐藏分区,一个200MB,一个15GB.我想把C ...
- 开源框架 epics,开源画面编辑软件 edm
epics Experimental Physics and Industrial Control System 一套开源软件框架,实验物理和工业控制系统 http://www.aps.anl.gov ...
- 【PHP 模板引擎】Prototype 原型版发布!
在文章的开头,首先要向一直关注我的人说声抱歉!因为原本是打算在前端框架5.0发布之后,就立马完成 PHP 模板引擎的初版.但我没能做到,而且一直拖到了15年元旦才完成,有很严重的拖延症我很惭愧,再次抱 ...
- 1.08 在select语句使用条件逻辑
问题:要在select语句中,对数值执行if-else操作.例如,要产生一个结果集,如果一个员工工资小于等于2000美金,就返回消息”underpaid”:如果大于等于4000美金:就返回消息”ove ...
- 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题
SurfaceView遮挡其他控件的项目背景: 最近在做播放器项目,由于底层实现是用Surface和OpenGL切换渲染,所以在布局里面同时使用了GLSurfaceView和SurfaceView,同 ...
- php图像处理插件imagick安装(仅适用于86位,php5.4非安全环境-16px)
phpImageMagick-6.7.7-5-Q16-windows-dll(加测试代码,经测试,仅适用于86位,php5.4安全环境-16px) 下载地址:http://pan.baidu.com/ ...
- 【转载】刘昕明:送给和我一样曾经浮躁过的PHP程序员
刘昕明:送给和我一样曾经浮躁过的PHP程序员 来源:刘昕明博客 作者:刘昕明 2012年偶决定开始写博客了,不为别的,就希望可以通过博客记录我的成长历程同时也希望可以帮助一些刚毕业,刚 ...
- css3之Media Queries 媒体查询
一.初步了解 Media Queries是CSS3新增加的一个模块功能,其最大的特点就是通过css3来查询媒体,然后调用对应的样式. 了解Media Queries之前需要了解媒体类型以及媒体特性: ...