Найти - Пользователи
Полная версия: помогите с решением задачи
Начало » Центр помощи » помогите с решением задачи
1
aleks0070
Найти произведение всех целых чисел в диапазоне от a до b. Использовать цикл while, а не for
scidam
Гораздо интересней, если вообще без циклов:
 def factorial(a):
    if a == 0: return 1
    return a * factorial(a - 1) if a > 0 else a * factorial(a + 1)
factorial(b) / factorial(a - 1)

Нужно, однако, для отрицательных чисел a,b доп. обработку небольшую…
py.user.next
scidam
  
def factorial(a):
Факториал есть в модуле math. Но и факториал здесь не нужен, так как слишком затратен по времени, если расстояние от a до b большое.
scidam
py.user.next
Точно, можно гораздо проще (и также с рекурсией):

 def ab(a, b):
    if a == b: return b
    return a * ab(a + 1, b)
print ab(5, 6)

Рекурсии, правда, медленные но не важно…
И главное, что не нужно теперь беспокоиться о знаках, только чтобы a<=b выполнялось.
aleks0070
scidam
py.user.nextТочно, можно гораздо проще (и также с рекурсией):
да только мне нужно все это сделать с циклом while и без использования функций)))
py.user.next
scidam
Рекурсии, правда, медленные но не важно…
Выполни
  
ab(1, 1000)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB