题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.斐波那契数列的定义如下: 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70). 输出: 对应每个测试案例, 输出第n项斐波那契数列的值. 样例输入: 3 样例输出: 2 [解题思路]本题应该是非常经典的递推/递归问题了,而且递推式子题目也已经给出.由此,可以设置简单的递归函数,其终止条件是调用参数为0或者1的时候. 一点点小技巧:由于题目有多个测试案例,每个案例都…
斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 实现代码 function Fibonacci(n) { var arr = []; arr[0] = 0; arr[1] = 1; for(var i = 2; i <= n; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } return arr[n]; } 思路 看到题目,首先想到的就是递归,f(n) = f(n-1) + f(n-2),…
题目:写一个函数,输入n,求斐波那契数列的第n项.斐波那契数列的定义如下: 1.效率很低效的解法,挑剔的面试官不会喜欢 使用递归实现: public class Fibonacci { public long getNum(int n){ if(n<=0){ return 0; }else if(n==1){ return 1; }else{ return getNum(n-1)+getNum(n-2); } } } 我们不难发现在这颗树中有很多的节点是重复的,而且重复的节点数会随着n的增大而急…
题目: 现在要求输入一个整数n,请你输出斐波那契数列的第n项. 斐波那契数列的定义: f(0)=0;f(1)=1; f(n)=f(n-1)+f(n-2) 思路: 1.递归: 根据递推公式来实现 优点:代码简单,易懂 缺点: 效率低:函数递归调用过程中需要不断分配栈空间,且不断地入栈出栈,代码执行效率低: 栈溢出:当递归层级太多时,会超出栈容量,导致栈溢出: 复杂度高:递归调用存在大量的重复计算,时间复杂度以n的指数递增. 2.循环: 从下往上计算(动态规划),克服递归出现的缺陷 3.类似问题:…
题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70),其中n为偶数. 输出: 对应每个测试案例, 输出用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有的方法数. 样例输入: 4 样例输出: 5 [解题思路]本题应结合辅助图形来做题,边推导的同时边画图.本题首先需要处理的是,跳出n为偶数的陷阱.因为紧从偶数…
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=50). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 6 样例输出: 32 [解题思路]拿到本题的第一反应就是斐波拉契数列的变种,那么是否可以认为第n台阶的跳法等于前面所有的台阶的跳法相加呢,当然这种想法可以实现,但效率却很低.仔细研读题目,我…
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 5 样例输出: 8 [解题思路]题目从正面突破很难,我们可以换个角度思考,跳上第n个台阶有几种跳法?有两种跳法:从第n-1台阶跳和从第n-2台阶跳.从而,我们自然而然的得到第n个台阶的跳法等于第n-1台阶的跳法…
/*斐波那契数列,又称黄金分割数列,指的是这样一个数列: 0.1.1.2.3.5.8.13.21.…… 在数学上,斐波纳契数列被定义如下: F0=0,F1=1, Fn=F(n-1)+F(n-2)(n>=2,n∈N*) 现在问题是:输入n,0≤n ≤1000,计算该数列第n项的值. */ #include<iostream> using namespace std; int main() { int n,i; long long a,b,c; while(cin>>n) { |…
题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入的第一行为一个数n(0<n<1000),代表测试样例的个数. 其中每个测试样例包括两行,第一行为一个二叉树的先序遍历序列,其中左右子树若为空则用0代替,其中二叉树的结点个数node_num<10000. 第二行为树中的两个结点的值m1与m2(0<m1,m2<10000). 输出: 对应每个测试案例, 输出给定的树中两个结点的最低公共祖先结点的值,若…
题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=10000000). 输出: 对应每个测试案例, 若输入为一个合法的字符串(即代表一个整数),则输出这个整数. 若输入为一个非法的字符串,则输出"My God". 样例输入: 5 -5 +8 样例输出: 5 -5 8 [解题思路]本题应该难度不大,首先我们输入一个字符串,然后判断首位…