面试题 10. 斐波那契数列

题目一:求斐波那契数列的第n项

题目描述:求斐波拉契数列的第n项
写出一个函数,输入n,求斐波拉契(Fibonacci)数列的第n项。斐波拉契数列定义如下:


C++ 实现

/* 斐波拉契数列 */
#include <iostream>
using namespace std;
/* 递归实现 */
long long Fibonacci1( unsigned int n )
{
if ( n <= 1 )
{
return(n);
}
return(Fibonacci1( n - 1 ) + Fibonacci1( n - 2 ) );
} /* 非递归实现 */
long long Fibonacci2( unsigned int n )
{
if ( n <= 1 )
{
return(n);
}
int f1 = 0, f2 = 1, sum;
for ( int i = 2; i <= n; i++ )
{
sum = f1 + f2;
f1 = f2;
f2 = sum;
}
return(sum);
} int main()
{
/* 测试数据 */
for ( int i = 0; i <= 20; i++ )
{
cout << Fibonacci1( i ) << " ";
}
cout << endl;
for ( int i = 0; i <= 20; i++ )
{
cout << Fibonacci2( i ) << " ";
}
cout << endl;
return(0);
}

运行结果

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
请按任意键继续. . .

题目二:青蛙跳台阶问题

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

C++ 实现

#include <iostream>
using namespace std;
/* 递归实现 */
long long JumpStairs( unsigned int n )
{
if ( n <= 1 )
{
return(n);
}
return(JumpStairs( n - 1 ) + JumpStairs( n - 2 ) );
} int main()
{
for ( int i = 1; i <= 20; i++ )
{
cout << JumpStairs( i ) << " ";
}
cout << endl;
return(0);
}

运行结果

题目三:变态跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。
求该青蛙跳上一个n级的台阶总共有多少种跳法。(F(n)=2*F(n-1))

C++ 实现

#include <iostream>
using namespace std;
/* 递归实现 */
long long JumpStairs( unsigned int n )
{
if ( n <= 1 )
{
return(1);
}
return(2 * JumpStairs( n - 1 ) );
} int main()
{
for ( int i = 1; i <= 10; i++ )
{
cout << JumpStairs( i ) << " ";
}
cout << endl;
return(0);
}

运行结果

题目四:矩形覆盖

题目描述:我们可以用2×1的小矩形横着或者竖着去覆盖更大的矩形。
请问用n个2×1的小矩形无重叠地覆盖一个2×n的大矩形,总共有多少种方法?

Java 实现

public class Solution {
public int RectCover(int target) {
if (target <= 2)
return target;
return RectCover(target - 1) + RectCover(target - 2);
}
}

运行结果

0 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946

【剑指offer】面试题 10. 斐波那契数列的更多相关文章

  1. 剑指offer第二版-10.斐波那契数列

    面试题10:斐波那契数列 题目要求: 求斐波那契数列的第n项的值.f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2) n>1 思路:使用循环从下往上计算数列. 考点:考察对递归 ...

  2. 剑指Offer - 九度1387 - 斐波那契数列

    剑指Offer - 九度1387 - 斐波那契数列2013-11-24 03:08 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.斐波那契数列的定义如下: ...

  3. 【剑指offer】9、斐波拉契数列

    面试题9.斐波拉契数列 题目: 输入整数n,求斐波拉契数列第n个数. 思路: 一.递归式算法: 利用f(n) = f(n-1) + f(n-2)的特性来进行递归,代码如下: 代码: long long ...

  4. 【剑指Offer】7、斐波那契数列

      题目描述:   大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).假设n<=39.   解题思路:   斐波那契数列:0,1,1,2,3, ...

  5. 剑指offer【07】- 斐波那契数列(java)

    题目:斐波那契数列 考点:递归和循环 题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0),n<=39. 法一:递归法,不过递归比较慢, ...

  6. 剑指offer(7)斐波那契数列

    题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 题目分析 我们都知道斐波那契可以用递归,但是递归重复计算的部分太多了(虽然可以通过),但是这 ...

  7. 【剑指offer】7:斐波那契数列

    题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1).假设 n≤39 解题思路: 斐波拉契数列:1,1,2,3,5,8--,总结 ...

  8. 剑指offer——矩阵覆盖(斐波那契变形)

    ****感觉都可以针对斐波那契写一个变形题目的集合了****** 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? cl ...

  9. 剑指offer——面试题10:斐波那契数列

    个人答案: #include"iostream" #include"stdio.h" #include"string.h" using na ...

随机推荐

  1. expect使用小结

    因为工作关系,需要经常从线上机器上拉取数据,于是想着能否写个脚本,自动完成这个任务呢? 我一般使用scp在机器间传输文件,然而每次scp都需要输入密码,自动化脚本怎么解决这个问题呢?于是expect这 ...

  2. HDU1814 2-sat 模板

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. php环境的安装

    一.xampp的安装 1.下载xampp安装包. 2.next下一步傻瓜式的安装. 3.输入地址127.0.0.1进入如下页面. 二.LAMP环境的安装

  4. Mybatis(1) 创建Mybatis HelloWorld

    简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...

  5. 洛谷 P3709 大爷的字符串题

    https://www.luogu.org/problem/show?pid=3709 题目背景 在那遥远的西南有一所学校 /*被和谐部分*/ 然后去参加该省省选虐场 然后某蒟蒻不会做,所以也出了一个 ...

  6. Linux 下访问Windows共享目录

    5.安装cifs-utils软件包 # yum install cifs-utils 貌似可以不用安装这个包. 6.在Linux下创建一个挂载点 # mkdir  /mnt/Windows 7.挂载W ...

  7. 【NOI】2004 郁闷的出纳员

    [算法]平衡树(treap) [题解] treap知识见数据结构. 解法,具体细节见程序. #include<cstdio> #include<algorithm> #incl ...

  8. Android Studio键盘快捷键

    Android Studio 为许多常用操作提供了键盘快捷键. 表 1 按操作系统显示了默认键盘快捷键. 注:除了下面表 1 中的默认键映射外,您还可以选择多种预设的键映射,也可以创建自定义键映射.如 ...

  9. java分页通用篇

    一.创建分页通用类 package com.dkyw.util; import java.util.List; public class Page<T> { private int tot ...

  10. java 连接MySQL的代码

    1.java connect MySQL as conding. https://www.cnblogs.com/centor/p/6142775.html