Engineering & Technology
มหาวิทยาลัย
เคลียร์แล้ว

Python
n是限制遞迴次數讓GCD作n次
13放returnGCD(x,y)只能跑一次
放number(n)結果為0
中間哪裡出錯了

def number(n) : for n in range (n): if n > @: 4 n = n-1 5 return n 6 Humanonoomne 7 8 9 else: break def GCD(x,y): while @ < x : (x,y) = (y,x%y) return y print(GCD(x,y)) return GCD(x,y) 10 11 12 13 14 15 if 16 n = 17 name__ == "_main__": int(input()) x,y = input().split() x = int(x) y = int(y) print(number(n)) 18 19 20

คำตอบ

✨ คำตอบที่ดีที่สุด ✨

哪裡出錯了喔...我可以說全部嗎ˊˋ

首先幾個問題先提出來:
1. 你的x跟y從頭到尾就沒有傳到最大公因數的這個function裡面,函數的變數不是設的跟主函數裡的變數一模一樣就可以用,你要有呼叫函數傳值的過程,像number(n)就是把n傳遞給number()。
2. 這不是遞迴,遞迴應該是重複呼叫底下的子結構,不是還要靠人工去限制執行次數。
3. 2到7行的這個for loop,看起來你是把變數的scope搞混了。如果你看一下課本或是網路上對range()的解釋,range()在只有一個參數的時候會預設從0開始。可以去想一下這樣的話for n in range(n)的第一個n是多少,進入迴圈後會執行什麼。
4. 11行return後,12行是不會執行的,因為看縮排他們都是在GCD()底下的這個while裡,但是你前一行就已經return把這個GCD()結束掉了,12行自然是不會執行的。

แสดงความคิดเห็น
PromotionBanner
ข้อสงสัยของคุณเคลียร์แล้วหรือยัง?