【首先思路】辗转相减 ,大概率超时。
【递归剪枝】
class Solution:
def reachingPoints(self, sx: int, sy: int, tx: int, ty: int) -> bool:
#使用递归方法
#结束条件
#当 某一对应坐标小于输入值时,表示不能转换
if tx < sx or ty < sy:
return False
# x坐标到位后,判断y坐标能否通过若干次 ty-sx ,到达 sy (ty 是否能通过sy 累加 **多次** sx到达 ty)
if tx == sx:
return ((ty-sy) % sx) == 0
if ty == sy:
return ((tx-sx) % sy )== 0
#递归体
#如果 tx > ty 时 传入 参数为 (初始值 , tx%ty , ty) 否则 传入 (初始值 , tx , ty%tx)
return self.reachingPoints(sx,sy,tx%ty,ty) if tx > ty else self.reachingPoints(sx,sy ,tx,ty%tx)
【辅助理解】