📅  最后修改于: 2023-12-03 15:42:07.863000             🧑  作者: Mango
本代码片段实现了一个函数,用于计算一个链表中所有不同的奇数斐波那契数的平均值。
函数接收一个链表的头结点作为参数,并返回计算得到的平均值。
本代码片段使用Python语言实现。
斐波那契数列是指:0、1、1、2、3、5、8、13、21、34……这样一个递推数列。
其中每一项都是由前两项之和得到:f(n) = f(n-1) + f(n-2),其中f(0) = 0,f(1) = 1。
奇数斐波那契数列是斐波那契数列中所有奇数项的集合,即:1、1、3、5、13、21、……
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def odd_fibonnaci_average(head: ListNode) -> float:
odd_fib = [1, 1] # 奇数斐波那契数列
ans = 0 # 总和
count = 0 # 出现次数
while odd_fib[-1] < 1000000: # 限定最大值
odd_fib.append(odd_fib[-1] + odd_fib[-2])
curr = head
while curr:
if curr.val in odd_fib:
ans += curr.val
count += 1
curr = curr.next
return ans / count if count else 0
调用示例:
l = ListNode(1, ListNode(2, ListNode(3, ListNode(4, ListNode(5, ListNode(6))))))
print(odd_fibonnaci_average(l)) # 3.0
输入为一个链表的头结点,输出为计算得到的平均值。
如果链表中不存在奇数斐波那契数,函数将返回0。