Обратный отсчет Обратный отсчет F # - PullRequest
0 голосов
/ 29 марта 2019

Мне нужна помощь, чтобы создать рекурсивную функцию, которая будет считать до 0, а затем считать до 3 в F #.

 let rec  countdownThenCountUp number goingup =
 match number with




  | number -> 0  goingup; true
  | number -> >0 goingup; false
  | number -> 3  goingup; done

1 Ответ

2 голосов
/ 30 марта 2019

Вы бы многому не научились, если бы люди просто предоставили работающее решение, поэтому вместо этого я просто добавлю пару подсказок.

Ваша базовая стратегия определения рекурсивной функции countdownThenCountUp хороша.Однако ваша функция принимает в качестве аргумента только number, что недостаточно.Например, когда вы звоните:

countdownThenCountUp 2

Как функция узнает, должен ли он считать вверх или вниз?Для этого недостаточно информации!Итак, вам нужно изменить функцию, чтобы она имела дополнительный параметр.Вы можете сделать что-то вроде:

let rec countdownThenCountUp number goingDown = 
  // (...)

Если вы сделаете это, то логика в функции должна быть примерно равна:

  • Если number больше нуля и goingDown равно true, затем обратный отсчет
  • Если number равен нулю, то вызовите рекурсивно с goingDown, установленным на false
  • Если number равно трем и goingDownis false затем остановите

Вы можете реализовать условия, используя сопоставление с образцом или if - оба будут работать нормально.

...