- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是给定的斐波那契数列:
1,1,2,3,5,8,13,21
这意味着 n = 8。这是我的斐波那契代码:
def fib(n, count= 0):
if n == 0:
return 0
elif n == 1:
return 1
return fib(n-1) + fib(n-2)
如何创建一个函数来计算上述序列中每个元素的计算次数?例如在计算 fib(5) 时,fib(0) 被调用了 3 次,fib(1) 被调用了 5 次,fib(2) 被调用了 3 次等等...
我尝试使用全局计数器,但我意识到每个 n 值都应该有一个计数器(如果我错了请纠正我)。任何帮助将不胜感激。
最佳答案
要计算您使用给定的 n
调用该函数的次数,您可以创建一个 Counter
并递增它:
from collections import Counter
c = Counter()
def fib(n):
c[n] += 1
if n == 0:
return 0
elif n == 1:
return 1
return fib(n-1) + fib(n-2)
fib(8)
print(c)
# Counter({1: 21, 2: 13, 0: 13, 3: 8, 4: 5, 5: 3, 6: 2, 8: 1, 7: 1})
这也是查看内存此功能效果的好方法。例如,这里是使用 lru_cache
的计数:
from collections import Counter
from functools import lru_cache
c = Counter()
@lru_cache()
def fib(n):
c[n] += 1
if n == 0:
return 0
elif n == 1:
return 1
return fib(n-1) + fib(n-2)
fib(8)
print(c)
#Counter({8: 1, 7: 1, 6: 1, 5: 1, 4: 1, 3: 1, 2: 1, 1: 1, 0: 1})
关于python - 如何跟踪每个元素在 Fibonacci 中的计算次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56097518/
所以我正在学习动态规划,我正在尝试测试我的内存解决方案与普通斐波那契解决方案。当我输入相当大的数字(如 43)时,我的内存解决方案需要永远运行,而正常的解决方案会在 5 - 6 秒后运行。这是否意味着
我必须找到一种方法来确定数据类型 long 在出现位溢出之前将保留斐波那契序列的多少次迭代。我不断收到错误: Exception in thread "main" java.lang.ArrayInd
从 F(n) 计算斐波那契数之和的最有效方法是什么?至 F(m)哪里F(n)和 F(m)分别是第 n 个和第 m 个斐波那契数,0 =< n <= m <109(其中 F(0)=0,F(1)=1)。
我有一个已启动并正在运行的 Haskell 函数,但它做错了事。 它应该输出一个斐波那契数列直到指定的最大数。 像这样: fibonacciSequence 86 1 1 2 3 5 8 13 21
我正在学习 Haskell,我写了一个简单的斐波那契函数: fib :: Int -> Int fib 1 = 1 fib 0 = 0 fib n = (fib (n-1)) + (fib (n-2)
我将使用 Javascript 编写一些代码。这是我们要做的: “使用闭包实现一个 javascript 斐波那契数列。具体来说,编写一个函数来存储两个连续的斐波那契数列,最初是 0 和 1。该函数还
这是一个程序,它接受一个命令行变量,将其解析为一个 int,输出是等于该命令行参数的斐波那契数。因此,如果我输入 7,输出将为 13。因为: 1 1 2 3 5 8 13有人能解释一下 b = a;在
我想为一个小游戏编写关卡系统。等级系统将与分数 Hook ,等级将进一步上升只给出了2个score值 lvl, 分数 0、50(从 0 - 50) 1、100(从 51 到 100) 2, 150 3
我的斐波那契代码遇到了一些问题。如果我想在数组(输入)中找到数字 5 的位置,系统说它的位置是 5,但它应该说 6?此外,如果我输入一个不在数组中的数字,系统会说它位于位置 20(例如输入 200)。
斐波那契堆在摊销的意义上是高效的,但在最坏的情况下它们的效率如何?具体来说,在 n 节点斐波那契堆上,这些操作中的每一个的最坏情况时间复杂度是多少? 找到分钟 删除分钟 插入 减少键 合并 最佳答案
可以创建一个快速的“给出第 n 个斐波那契数”函数,如所述 here .有没有一种方法可以编写在 O(1) 中执行的 isFibonacci(int i) 函数? 我可以预先计算值。但是计算最后一个
问题是... Each new term in the Fibonacci sequence is generated by adding the previous two terms. By sta
一:递归实现 使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1。 二:数组实现 空间复杂度和时间复杂度都是0(n),效率一般,比递归来得快。 三:
题目地址:https://leetcode.com/problems/fibonacci-number/ 题目描述 TheFibonacci numbers, commonly denoted F
有没有一种方法可以在 APL 中使用不需要循环或流量控制的单行创建斐波那契数列? 我已经使用 → 的函数完成了它和条件测试,但我觉得必须有一种更优雅、声明式的方式。安 example我发现声称在一行上
我正在尝试解决第二个欧拉问题(计算所有偶数斐波那契数的总和< 400万),到目前为止我已经想出了这个: public class CCTrial1 { public static void f
Fibonacci LFSR wiki上有介绍,很简单。 我想计算一些 Fibonacci 的 LFSR 的周期,然后使用生成的序列进行加密。 让我们以维基为例: x16 + x14 + x13 +
我创建了以下简单的斐波那契实现: #![feature(test)] extern crate test; pub fn fibonacci_recursive(n: u32) -> u32 {
这是给定的斐波那契数列: 1,1,2,3,5,8,13,21 这意味着 n = 8。这是我的斐波那契代码: def fib(n, count= 0): if n == 0: r
此代码返回缓慢且输出不同: from numba import jit from timeit import default_timer as timer def fibonacci(n):
我是一名优秀的程序员,十分优秀!