рдкрд╛рдпрдерди рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рджреВрд░ рдХрд░рдирд╛

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрд░рд┐рдХ рд▓рд┐рдкрд░реНрдЯ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ "рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ, рднрд╛рдЧ 1" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред


рдкрд┐рдЫрд▓реЗ 20 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╛рдпрдерди рдХреА рд╕рд╛рджрдЧреА рдФрд░ рд╢рдХреНрддрд┐ рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдХрднреА рднреА рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ рдЙрд╕реЗ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрд╛ рд╣реИ - рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рднрд╛рд╖рд╛ рд╣реИред


StackOverflow рдкрд░ рд╣рд╛рд▓ рдХреЗ рдПрдХ рд╕рд╡рд╛рд▓ рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкрд╛рдпрдерди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рднрд╛рд╖рд╛ рдереАред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд▓реЗрдЦрдХ рдХреЗ рд╕рд╛рдордиреЗ рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереА:


  • рдЦрд┐рд▓рд╛рдбрд╝реА рдПрдХ рдЧрд┐рдиреЗ рд╣реБрдП рдХреНрд╖реЗрддреНрд░ рдкрд░ рдПрдХ рдордирдорд╛рдирд╛ рд╕реЗрд▓ рдореЗрдВ рд╣реИ;
  • рд▓рдХреНрд╖реНрдп рд╕реЗрд▓ рдирдВрдмрд░ 1 рдкрд░ рд▓реМрдЯрдирд╛ рд╣реИ;
  • рдпрджрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рд╕рдо рд╡рд░реНрдЧ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдПрдХ рд╕рд┐рдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕реЗрд▓ рдирдВрдмрд░ 1 рдкрд░ рдЖрдзрд╛ рдЬрд╛рддрд╛ рд╣реИ;
  • рдпрджрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдПрдХ рд╡рд┐рд╖рдо рд╡рд░реНрдЧ рдкрд░ рд╣реИ, рддреЛ рд╡рд╣ 5 рд╕рд┐рдХреНрдХреЛрдВ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реАрдзреЗ рдкрд╣рд▓реЗ рд╡рд░реНрдЧ рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рд╕рд┐рдХреНрдХреЗ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд░реНрдЧ рдкрд░ рд╡рд░реНрдЧ рдирдВрдмрд░ 1 рдХрд╛ рдПрдХ рдХрджрдо рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рд╕рд┐рдХреНрдХреЛрдВ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдХрд╛рд░реНрдп рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рдорд╛рдзрд╛рди рд╣реИ:


def cost(s): if s <= 1: return 0 if s % 2 == 0: return 1 + cost(s // 2) return min(1 + cost(s - 1), 5) 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдЕрдзрд┐рдХрддрдо рдЧрд╣рд░рд╛рдИ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╢реНрди рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ред
рдЗрд╕рд▓рд┐рдП, рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдкрд╛рдпрдерди рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рд╣реИ?


рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЗ рддреЗрдЬреА рд╕реЗ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред


рдмрд▓реНрдХрд┐, рдпрд╣ рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ, рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХрд▓ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред


рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рд╕рд░рд▓ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкрджреНрдзрддрд┐ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рд╣рд╛рде рдореЗрдВ рдерд╛ред


рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЬрд┐рд╕ рддрдХрдиреАрдХ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рдпрдерди рдХреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд╢рд╛рдпрдж рдПрдХ рдкрд╛рдпрдерди-рд╢реИрд▓реА рд╕рдорд╛рдзрд╛рди рдЬрдирд░реЗрдЯрд░ рдпрд╛ рднрд╛рд╖рд╛ рдХреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред


рдореИрдВ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ рдХрд┐ рдХреИрд╕реЗ рдЫреЛрдЯреЗ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдРрд╕реЗ рд░реВрдк рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдпрд╛ рдЬрд╛рдПред


рд╣рдорд╛рд░реЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рдХреА рдЧрдИ рдЧрдгрдирд╛рдУрдВ рдХреЛ рддрд░реНрдХ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдЧрдгрдирд╛рдУрдВ рдХреЗ рдмрд╛рдж, рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред


 def add_one(n): return n + 1 def get_min(n): return min(n + 1, 5) def cost(s): if s <= 1: return 0 if s % 2 == 0: argument = s // 2 result = cost(argument) return add_one(result) argument = s - 1 result = cost(argument) return get_min(result) 

рджреВрд╕рд░рд╛ рдЪрд░рдг рдЬреЛ рдореИрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рддрд░реНрдХ рдХреА рдЧрдгрдирд╛ рд╣реИ:


 # ... def get_argument(s): if s % 2 == 0: return s // 2 return s - 1 def cost(s): if s <= 1: return 0 argument = get_argument(s) result = cost(argument) if s % 2 == 0: return add_one(result) return get_min(result) 

рддреАрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ, рдореИрдВ рдПрдХ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рд▓реМрдЯрдиреЗ рдХреЗ рдмрд╛рдж рдЬрд╛рд░реА рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛ред


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИред


 #... def get_after(s): if s % 2 == 0: return add_one return get_min def cost(s): if s <= 1: return 0 argument = get_argument(s) after = get_after(s) # after  ! result = cost(argument) return after(result) 

рдЕрдм рд╣рдо рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:


 #... def is_base_case(s): return s <= 1 def base_case_value(s): return 0 def cost(s): if is_base_case(s): return base_case_value(s) argument = get_argument(s) after = get_after(s) return after(cost(argument)) 

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрд░реНрде рдХреЛ рдмрдирд╛рдП рд░рдЦрд╛ред


рдЕрдм рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рджреЛ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЪреЗрдХ рдерд╛ред


рдпрджрд┐ рд╣рдо рдЪрд╛рд╣реЗрдВ, рддреЛ рд╣рдо рджреЛ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЯрдкрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИред


рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред


рд╣рдордиреЗ рдЕрдкрдиреА рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкрджреНрдзрддрд┐ рдХреЛ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред


  • рдЖрдзрд╛рд░ рдорд╛рдорд▓реЗ рдореЗрдВ:
    • рд▓реМрдЯрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ;
    • рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЛред
  • рдПрдХ рдЧреИрд░-рдмреБрдирд┐рдпрд╛рджреА рдорд╛рдорд▓реЗ рдореЗрдВ:
    • рдкреБрдирд░рд╛рд╡рд░реНрддреА рддрд░реНрдХ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ;
    • рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХрд░реЗрдВ;
    • рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ;
    • рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЛред

рдЗрд╕ рдХрджрдо рдкрд░ рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ after cost рдХреЙрд▓реНрд╕ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред


рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рддрд░реАрдХрд╛ рдПрдХрд▓ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред


рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 2 рдпрд╛ рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдЕрдкрдиреЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рд▓реЗ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдореЗрдВ рдмрджрд▓рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╕рд╛рди рд╣реИред


рдЪрд╛рд▓ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред


рд╣рдо рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рдВрд╢ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ: рд╣рдо рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ get_argument рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рд▓реМрдЯрдиреЗ рдХреЗ рдмрд╛рдж рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред


рдпрд╣реА рд╣реИ, get_argument рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЙрд▓ рдХреЗ рдмрд╛рдж рд╕рднреА рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ 2 рдЪрдХреНрд░реЛрдВ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ: рдкрд╣рд▓реА рдХреЙрд▓ get_argument рдФрд░ рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рдж рдХреА рд╕реВрдЪреА рдмрдирд╛рддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдХреЙрд▓ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рдж рд╣реЛрддреА рд╣реИ:


 #... def cost(s): #     "after".    #       # ,    . afters = [ ] while not is_base_case(s): argument = get_argument(s) after = get_after(s) afters.append(after) s = argument #       "after" : result = base_case_value(s) while len(afters) != 0: after = afters.pop() result = after(result) return result 

рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐!


рдпрд╣ рдЬрд╛рджреВ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣рд╛рдВ рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред


рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдХреНрд╕рд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ: рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рдмрддрд╛рдирд╛ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдФрд░ рди рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдХреНрдпрд╛ рд╣реБрдЖ рд╣реИ!


рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдкрд░ рдПрдХрдорд╛рддреНрд░ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдмрд╛рдж рдХреЗ рдореВрд▓реНрдп рдХреНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдЧрд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдЯреИрдХ рдкрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред


рд╕реНрдЯреИрдХ рдХреЗ рдмрд╛рдж рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдХреНрд╖рдо рдФрд░ рдмреЛрдЭрд┐рд▓ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдмрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреИрдХ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЕрдЧрд▓реА рдмрд╛рд░ рд╣рдо рдкрд╛рдпрдерди рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦреЗрдВрдЧреЗред

Source: https://habr.com/ru/post/hi440178/


All Articles