Pyhton 一行代码求Fibonacci第N项

递归定义很简单,效率当然很低下,且极易超出栈空间大小,这样做纯粹是为了体现python的语言表现力而已, 并没有任何实际意义。

1 def fib(x):
2     return fib(x-1) + fib(x-2) if x - 2 > 0 else 1
时间: 2024-10-14 04:34:33

Pyhton 一行代码求Fibonacci第N项的相关文章

c++算法极致(一行代码求1+2+3+...+n , 一行代码求n!)

#include <iostream> //n!的求解 using namespace std; int Giral(int n) { (n>2) && (n*=Giral(n-1));//这里不能写n>0,因为n=0时会返回0,将乘式的结果会化成0,n>2比n>1要少一次,效率要高一些. return n; } int main() { cout<<Giral(4)<<endl; } #include <iostream&

算法总结之 一行代码求两个数的最大公约数

给定两个不等于0的整数M和N,求M和N的最大公约数 辗转相除法 思路:如果q和r分别是m除以n的商及余数,即m=nq+r, 那么m和n的最大公约数等于n和r的做大公约数!(递归) public class Test9 { public static int gcd(int m, int n){ return n==0 ? m : gcd(n, m%n); } public static void main(String[] args){ int x = gcd(15, 3); System.ou

辗转相除法求最大公约数------一行代码

今天学到一行代码,感觉好牛逼--------当然是老师上课讲的. 辗转相除法是求最大公约数最好的方式了吧! 辗转相除法原理我也不想多说,百度一下就可以了(基本就是用大数与小数取余,再用比余数大一点的数与余数取余, 反复直到出现余数为0,那个比0大一点的数就是最大公约数) 好了,废话不多说了------上代码 int gcd(int m, int n){ return n % m == 0 ? m : gcd(n%m, m); } 详细讲解一下: 优势是使用了递归,一直让大数与小数取余,直到出现0

求Fibonacci数的三种方法和时间复杂度解析

题目: 定义Fibonacci数列如下: f(0)=1 f(1)=1 f(n)=f(n-1)+f(n-2), n>=2 输入n,用最快的方法求该数列的第n项. 解答一: 直接用公式写递归函数.很简单,很低效,就不写了.时间复杂度T(N) = T(N-1) + T(N-2); 也是f(n)本身,2^(n/2)<f(n)<2^n. 解答二: 用循环求,也很直接,效率很高了,时间复杂度是O(n). int f(int n) { if(n <= 1) return 1; int f0=1,

Fibonacci 第 n 项及Fibonacci 前 n 项和

这其实是两道题目,但是他们量都题目的思路是在是相像,而且炒鸡厉害. Fibonacci 第 n 项 题目描述 大家都知道 Fibonacci 数列吧,f1=1,f2=1,f3=2,f=3...fn=fn-1+fn-2, f1=1,f2=1,f3=2,f4=3,-,fn=fn?1+fn?2. 现在问题很简单,输入 n 和 m,求 fn mod m 输入格式 输入 n,m. 输出格式 输出 fn mod m 样例输入 5 1000 样例输出 5 Fibonacci 前 n 项和 题目描述 大家都知道

一行代码比较用户A和用户B的年龄大小(两个日期计算)

两个日期计算 用法: <edate [id=书包名] [list]> <we start="开始日期" end="结束日期" [format="yyyy-MM-dd HH:mm:ss.SSS"]/> </edate> ·        id:书包名,EDate标签返回的书包名称,可选,为空时书包名为标签名edate ·        list:列表,可选,要不要列出从开始到结束的所有日期 ·        st

循环-10. 求序列前N项和(15)

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和.注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子. 输入格式: 输入在一行中给出一个正整数N. 输出格式: 在一行中输出部分和的值,精确到小数点后2位.题目保证计算结果不超过双精度范围. 输入样例: 20 输出样例: 32.66 #include <iostream> #include <stdio.h> using namespace std; int main(){ i

只需手动增加一行代码即可让Laravel4运行在SAE

Github:https://github.com/chariothy/laravel4-sae laravel4-sae 只需手动增加一行代码即可让Laravel4(~4.2)运行在SAE,而且在本地和在SAE开发无需命令切换,自动判断环境并切换配置. 安装 在SAE安装Laravel 在SAE安装Laravel与本地环境安装稍有区别: 在SAE的"应用管理"中新建一个没有代码的应用,比如叫project-name(这里面只是便于举例,实际上SAE不允许用字符'-'): 用svn将其

1987年国际C语言混乱代码大赛获奖的一行代码

macb() ? lpcbyu(&gbcq/_\021%ocq\012\0_=w(gbcq)/_dak._=}_ugb_[0q60)s+ 这是CoolShell博主之前做了一个很有意思的在线puzzle,仿照一些前端过关的游戏,做了几个和程序员有关的迷题,一个通关游戏,这个事测试的第二题.并为通关的前十名送上<Unix环境高级编程(第三版)>(感谢@出版圈郭志敏 赞助)或一个马克杯(感谢@linux命令行精选网 赞助))这些谜题很有趣同时也有一定的难度.由于水平有限,我并没有通关,但我