Есть и другие подходы, которые вы можете использовать. Если вы хотите придерживаться подхода, к которому вы привыкли, этот вопрос не столько о динамическом программировании, сколько о значениях дозорного . Какое значение вы можете использовать в качестве дозорного, если возможны все действительные числа?
Одна деталь, которую я замечаю, состоит в том, что возможны все действительные числа. Это и хорошо, и плохо. Это плохо, потому что компьютер не может представить каждое действительное число, но, вероятно, это уже учтено. Это хорошо, потому что большинство методов, используемых для представления действительных чисел, включают некоторые значения, которые не являются действительными числами. float
или double
значения, которые, очевидно, не являются действительными числами, являются NaNs (не число). Другой вариант - бесконечность . В любом случае, std::is_finite
можно использовать для определения того, было ли изменено значение дозорного до действительного числа.
Строго говоря, не гарантируется, что эти значения будут доступны, но на практике они, вероятно, есть. Когда они доступны, их можно использовать в качестве часовых, если ваша специальная функция не может их вернуть. (Дважды проверьте утверждение «возможны все действительные числа» в терминах float
/ double
значений & mdash; может ли функция вернуть значение, которое не является действительным числом?)