2016-09-27 51 views
0
IF X ≠ 0 GOTO A 
    Z ← Z + 1 
    IF Z ≠ 0 GOTO B 
[A] X ← X – 1 
    Y ← Y + 1 
    IF X ≠ 0 GOTO A 
[B] Y ← Y + 1 
    Y ← Y + 1 
    Y ← Y + 1 

由於y被複合了4次,我想出了y = x + 4。這可能是錯誤的。試圖找出解決方案,這個程序計算什麼功能?

+1

輸入是什麼? –

+0

沒有給出任何輸入。只有指示才能找到程序計算的功能。來自Davis,Sigal,Weyuker的複雜性和語言。 – user134547

回答

0

我認爲這是一些函數y(x,z)因爲Y是唯一指定但未在條件中使用的值。我還假設X必須是自然數,否則此函數將進入無限循環(嘗試X = -1)。


1: IF X ≠ 0 GOTO A 
2: Z ← Z + 1 
3: IF Z ≠ 0 GOTO B 
4: [A] X ← X – 1 
5: Y ← Y + 1 
6: IF X ≠ 0 GOTO A 
7: [B] Y ← Y + 1 
8: Y ← Y + 1 
9: Y ← Y + 1 

Y總是遞增3次通過線7-8,所以Y必須至少爲3。

=>y = 3 + ...

假設x > 0, z = n

第1行跳到第4行,並增加YX次(遞減X,然後循環,而X >= 0,第4-6行)。因此Y必須至少爲X

=>y = x + 3

假設x = 0

在這種情況下,第1行落空至管線2 Z遞增從它的初始值,然後檢查。如果Z不等於零,Y = 3(第3,7-9行)。如果Z等於零,這意味着初始值爲Z = -1,則Y = X + 3(第3行落入第4-9行)。


因此此函數(如果窗體y(x,z)的)是以下形式的片分段函數:

y(x,y) = {3 if Z = -1, X + 3 otherwise}, such that X is an element of the natural numbers.


注意,這僅僅是一個猜測。如果沒有定義的輸入和輸出(正如你所說的書中沒有指出的那樣),它們就可以解釋。

相關問題