计算机编程挑战题和解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机编程挑战题和解答
1. 题目:实现一个函数,用于计算斐波那契数列的第n项
描述
编写一个函数,输入一个正整数n,返回斐波那契数列的第n 项。
示例
输入:n = 5
输出:5
解答
def fibonacci(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(5))
2. 题目:实现一个函数,用于检查一个数是否为质数
描述
编写一个函数,输入一个正整数n,返回一个布尔值,表示该数是否为质数。
示例
输入:n = 11
输出:True
解答
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
print(is_prime(11))
3. 题目:实现一个函数,用于计算两个链表的交集
描述
编写一个函数,输入两个单链表的头节点head1和head2,返回它们的交集。
示例
输入:head1 = [1, 2, 3], head2 = [2, 3, 4] 输出:[2, 3]
解答
class ListNode:
def __init__(self, val=0, next=None): self.val = val
self.next = next
def get_intersection(head1, head2):
set1 = set()
current1 = head1
while current1:
set1.add(current1)
current1 = current1.next
current2 = head2
while current2:
if current2 in set1:
return current2
current2 = current2.next
return None
head1 = ListNode(1, ListNode(2, ListNode(3)))
head2 = ListNode(2, ListNode(3, ListNode(4)))
print(get_intersection(head1, head2).val)
以上是三道计算机编程挑战题的详细解答,希望对您有所帮助。
如果您有其他问题或需要进一步的解释,请随时提问。