Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 算法返回的形式化证明_Algorithm_Fibonacci_Proof - Fatal编程技术网

Algorithm 算法返回的形式化证明

Algorithm 算法返回的形式化证明,algorithm,fibonacci,proof,Algorithm,Fibonacci,Proof,我需要正式证明下面的算法在n=1时返回1,在其他情况下返回0 function K( n: word): word; begin if (n < 2) then K := n else K := K(n − 1) * K(n − 2); end; 函数K(n:word):word; 开始 如果(n1的情况,我们可以通过归纳法解决: Base:对于n=2,我们得到:K(2)=K(1)*K(0)=1*0=0 对于n=3,我们得到:K(3)=K(2)*K(1)=0*1=0注意K(2

我需要正式证明下面的算法在n=1时返回1,在其他情况下返回0

function K( n: word): word;
begin
   if (n < 2) then K := n
   else K := K(n − 1) * K(n − 2);
end;
函数K(n:word):word;
开始
如果(n<2),则K:=n
否则K:=K(n)− 1) *K(n)− 2);
终止

有人能帮忙吗?感谢通过调用算法,得到
n=1
答案是
K=n=1
,因此我们已经完成了该案例。
对于
n=0
,根据定义,
K(0)=0

对于
n>1
的情况,我们可以通过归纳法解决:

Base:对于
n=2
,我们得到:
K(2)=K(1)*K(0)=1*0=0

对于
n=3
,我们得到:
K(3)=K(2)*K(1)=0*1=0
注意
K(2)=0
,因为我们只显示了一行。
索赔:对于任何
11



请注意,该声明适用于非负数,例如,如果允许
n=-5
,则得到
K(-5)=-5
——这是声明的反例。

假设
n=0
。由于
0<2
我们得到了
0

n=1
。由于
1<2
我们得到了
1

n=2。K(2)=K(1)*K(0)
。因为
K(0)=0
我们得到了
0

对于
n>2
现在我们假设关于算法的陈述为真,即
K(n)=0
。 现在让我们来说明
n+1
也是如此:


K(n+1)=K(n)*K(n-1)
。由于
K(n)=0
很明显,
K(n)*K(n-1)=0

这可以通过归纳法来证明,但正如之前的海报所示,在证明中直接引用
K
时,很难获得形式上的正确性

我的建议是:让p(n)成为我们想要展示的属性:

p(n)保持iff K(n)对n=1产生1,对n产生0≠ 一,

现在,我们可以清楚地表达我们想要展示的内容:Ɐn、 P(n)

  • 基本情况:n&leq;二,

    通过案例分析进行简单检查:

    p(0)是可以的,因为K(0)=0
    P(1)是可以的,因为K(1)=1

  • 归纳假设:

    所有2&leq的p(n)保持不变;n
  • 归纳步骤:表明p(c)保持不变

  • 根据K的定义,我们有K(c)=K(c-1)×K(c-2)
  • 通过归纳假设,我们知道P(c-1)和P(c-2)成立
  • 由于K(c-1)和K(c-2)中最多有一个可以为1(另一个必须为0),因此乘积为0
  • 这意味着P(c)保持不变

  • Qed。

    你自己试过什么吗?我试过了,但做不到。我会试试的。给我几分钟。我假设
    n>=0
    是一个先决条件。我想你可以用归纳法来证明这一点,递归非常适合归纳法。归纳法假设到底是什么?@aioobe
    对于任何一个1,如果n>2,你刚才证明斐波那契是0?@GiorgiNakeuri这不是斐波那契,斐波那契是
    f(n-1)+(n-2)
    ,不
    f(n-1)*f(n-2)
    ,并且具有不同的基本子句。你读过斐波那契的问题/答案/定义吗?哦,对不起,我没注意到,看了问题上的标签