5、斐波那契数列、跳台阶

2024-06-16 12:12
文章标签 斐波 那契 数列 台阶

本文主要是介绍5、斐波那契数列、跳台阶,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目: 斐波那契数列

描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39

<?phpfunction Fibonacci($n)
{if($n<=0){$f1 = 0;}else if($n==1||$n==2){$f1 = 1;}else{$f1 = 1; $f2 = 1;while ($n-- > 2) {$f1 += $f2;$f2 = $f1-$f2;}}return $f1;
}

题目: 跳台阶

描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

<?php
/*
解析:
在本体中只有两种跳法即,一阶或者两两阶
a.那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1);
b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2)
c.由a和b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2) 
d.然后通过实际的情况可以得出:只有一阶的时候 f(1) = 1 ,只有两阶的时候可以有 f(2) = 2
e.可以发现最终得出的是一个斐波那契数列:| 1, (n=1)
f(n) =    | 2, (n=2)| f(n-1)+f(n-2) ,(n>2,n为整数)
采用迭代比递归效率高
*/
function jumpFloor($number)
{$value=0;if($number==1){$value = 1;}else if($number==2){$value = 2;}else{$f1 = 1; $f2 = 2;for($i=3;$i<=$number;$i++){$value = $f1+$f2;$f1 = $f2;$f2 = $value;}}return $value; 
}

这篇关于5、斐波那契数列、跳台阶的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1066423

相关文章

斐波那契的递归函数

斐波那契函数的数学定义 斐波那契的递归实现 #include <stdio.h>int Fbi(int i){if(i<2)return i == 0?0:1;return Fbi(i-1)+Fbi(i-2);}int main(void){int i;for(i = 0;i < 40;i++)printf("[%d] %8d \n",i,Fbi(i));return 0;

动态规划DP--斐波那契数、爬楼梯、使用最小花费爬楼梯等示例代码

动态规划DP 文章目录 动态规划DP509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯62. 不同路径63. 不同路径II343.整数拆分 509. 斐波那契数 509. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) =

c#编程:有一个分数序列,2/1,3/2,5/3,8/5,13/8,21/13....找出数列的规律并求出其前30项的和

using System;using System.Collections.Generic;using System.Linq;using System.Text;//有一个分数序列,2/1,3/2,5/3,8/5,13/8,21/13....找出数列的规律并求出其前30项的和namespace ans1{class Program{static void Main(string[]

LeetCode665.非递减数列

LeetCode刷题记录 文章目录 📜题目描述💡解题思路⌨C++代码 📜题目描述 给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。 示例1

[CQU 21466] zzblack与斐波那契数列 (矩阵快速幂)

CQU - 21466 求 f(⌈(5√+12)2m⌉) f( \lceil {(\frac {\sqrt{5}+1} {2})}^{2m} \rceil )%2238065148 其中 f(n) f(n)是 Fibonacci Fibonacci数列的第 n项 首先要求项数,一看 m很大,肯定是快速幂 但是底数是个浮点数,肯定不能直接快速幂 所以要给底数加一个 (5√

C++并发之协程实例(二)(计算斐波那契序列)

目录 1 协程2 实例-计算斐波那契序列2.1 斐波那契序列2.2 代码 3 运行 1 协程   协程(Coroutines)是一个可以挂起执行以便稍后恢复的函数。协程是无堆栈的:它们通过返回到调用方来暂停执行,并且恢复执行所需的数据与堆栈分开存储。这允许异步执行的顺序代码(例如,在没有显式回调的情况下处理非阻塞I/O),还支持惰性计算无限序列上的算法和其他用途。 协程类图如下:

斐波那契数列求第N项递归改进

递归思路: int fib(int n) {if ( 2 > n) {return n;}return fib(n-1) + fib(n-2);} 展开递归计算过程,如下为求第fib(5)的递归过程。 如上发现好多重复计算过程,时间与空间的消耗也是必然的。 颠倒计算方向,由自顶而下递归,为自底而上迭代(动态规划) 算法描述为: int fib(int n) {int f = 0, g

Python数列求和

1 问题 如何用python解决数学问题?如何用python数列求和? 2 方法 代码清单 1 Courier New字体,23磅行间距>>> def sum_num():    input_num = input("输入一个0-9的整数:")    try:        input_num = int(input_num)        if input_num > 9 or input_

高中数学:数列-累加法与累乘法

一、累加法 主要用来解决类似等差数列递推公式的相关变形题目 1、推导等差数列的通项公式 2、题型1 对递推式变形,通项的系数为1,常数项d变成含n的一次函数 解: 题型2 对递推式变形,通项的系数为1,常数项d变成含n的指数函数 解: 题型3 对题型2的变形 解: 二、累乘法 主要用来解决类似等比数列递推公式的相关变形题目 1、推导等比数列通项公式

一层循环实现回旋数列

所谓回旋数,就是下面这样 3的回旋数 1 2 3 8 9 4 7 6 5 5的回旋数 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 输入n得到相应的回旋数 学完了 判断 循环 和函数 恰好看到这道题