假设:
F(F(n))= n
F(F(n + 2)+ 2)= n
F(0)= 1
其中n是非负整数。 F(129)=?
我们如何以编程方式解决这类函数方程?我选择的编程语言是Python。
答案 0 :(得分:5)
功能方程,用它们最一般的术语来说,真的很难。几乎每个国际数学竞赛都有其中之一,通常看起来像你写的一样无辜,这绝非巧合。解决它们的方法各不相同,从简单归纳到无限维Banach空间分析,解决它们的通用编程方法是不太可能的。
在这种特殊情况下,这是一个直截了当的方法:
假设对于任何两个整数m,n,我们有F(m)= F(n)= k。但是m = F(F(m))= F(k)= F(F(n))= n:因此m = n并且F在两个不同的输入上从不采用相同的值。但我们知道F(F(n))= n = F(F(n + 2)+2) - 因此F(n)和F(n + 2)+2必须是相同的数字 - 也就是说,F(n + 2)== F(n)-2 == F(n-2)-4 = .......现在我们知道F(0)= 1,所以F(1)= F(F(0))= 0.但是F(129)= F(127) - 2 = F(125) - 4 = ... = F(1) - 128 = -128
所以有你的解决方案 - 但是不存在用于解决任何变化的机械算法。
答案 1 :(得分:2)
根据@ivancho和@aaronasterling的说法,我已经能够编写这个应该可以解决问题的程序了:
def f(n):
if not n:
return 1
else:
return f(n-2)-2
>>> f(4)
-3
评论这不是你想要的