Mỗi chương trình máy tính đều có thể được biểu diễn mà không cần phân nhánh. Bạn sẽ cần một chương trình dài vô tận, nhưng nó có thể được thực hiện. (Bạn vẫn cần một câu lệnh if) Tôi đoán đó là nơi bạn sẽ nhận được bằng chứng chính thức của mình. http://www.jucs.org/jucs_2_11/conditional_branching_is_not/Rojas_R.html
Ngoài ra, bất kỳ khối mã nào bạn có thể GoTo, có thể được tách ra và đặt trong máy trạng thái hoặc lặp lại lặp lại. Nếu bạn lấy một khối mã đầy ngẫu nhiên (và các câu lệnh goto chồng chéo), thì mỗi điểm goto có thể được gán cho một hàm cụ thể, và mỗi Goto có thể được thay thế bằng hàm function_exit và gán cho trạng thái tiếp theo.
Vì vậy
Point1:
do something
Point2:
do something
if blah goto point3
goto point4
point3:
something
point4:
goto point2:
end
can be replaced by
function point1
do something
return = point2
end_function
function point2
do something
if blah return = point3
return = point4
end_function
function point3
something
return = point4
end_function
function point4
return = point2
end_function
state = point1
repeat
state = call_function (state)
until (state=end)
này hoàn toàn mô phỏng goto mà không sử dụng goto, và vì điều này, tôi muốn trả lời - vâng.
Tôi không chắc chắn về goto nơi mà điểm goto có thể là một biến.
Bằng chứng là: bạn có thể triển khai một máy Turing phổ quát mà không cần đến goto và bạn có thể thực hiện bất kỳ thuật toán nào với máy Turing chung và chuỗi ký tự đại diện cho đầu vào của nó. – jkff
Tính năng 'goto' có thể giới thiệu" nhiều vòng lặp nhập ", còn được gọi là vòng" không thể tháo rời ". Loại bỏ các vòng irreducible về cơ bản đạt được bằng cách sao chép mã. Xem [Xử lý các vòng lặp không thể phá hủy: Chia nhỏ nút được tối ưu hóa so với biểu đồ DJ] (http://moss.csc.ncsu.edu/~mueller/ftp/pub/mueller/papers/europar01.ps.gz) để thảo luận về cách thức mà điều này có thể được thực hiện. –