Рассмотрите простую функцию, которая добавляет первые целые числа N. (например, sum(5) = 1 + 2 + 3 + 4 + 5 = 15
).
Вот простая реализация JavaScript, которая использует рекурсию:
function recsum(x) {
if (x===1) {
return x;
} else {
return x + recsum(x-1);
}
}
, Если бы Вы звонили recsum(5)
, это - то, что оценил бы интерпретатор JavaScript:
recsum(5)
5 + recsum(4)
5 + (4 + recsum(3))
5 + (4 + (3 + recsum(2)))
5 + (4 + (3 + (2 + recsum(1))))
5 + (4 + (3 + (2 + 1)))
15
Примечание, как каждый рекурсивный вызов должен завершиться перед интерпретатором JavaScript, начинает на самом деле делать работу вычисления суммы.
Вот рекурсивная хвостом версия той же функции:
function tailrecsum(x, running_total=0) {
if (x===0) {
return running_total;
} else {
return tailrecsum(x-1, running_total+x);
}
}
Вот последовательность событий, которые произошли бы, если бы Вы звонили tailrecsum(5)
, (который эффективно был бы tailrecsum(5, 0)
из-за второго аргумента по умолчанию).
tailrecsum(5, 0)
tailrecsum(4, 5)
tailrecsum(3, 9)
tailrecsum(2, 12)
tailrecsum(1, 14)
tailrecsum(0, 15)
15
В рекурсивном хвостом случае, с каждой оценкой рекурсивного вызова, эти running_total
обновляется.
Примечание: исходный ответ использовал примеры из Python. Они были изменены на JavaScript, так как интерпретаторы Python не поддерживают оптимизация последнего вызова . Однако, в то время как оптимизация последнего вызова часть спецификации 2015 года ECMAScript, большинство интерпретаторов JavaScript не поддерживает его .
Вы можете просто перетащить элемент управления asp: Login на свою страницу, а затем в коде за ним перехватить событие Authenticate элемента управления Login.
В событии Authenticate проверьте имя пользователя / пароль, которые пользователь вошел. Имя пользователя и пароль являются свойствами элемента управления входом. (LoginCtrl.UserName, LoginCtrl.Password)
Если имя пользователя и пароль верны, просто установите для свойства Authenticated аргументы события значение True.
Провайдер членства не требуется.
например. На странице aspx ..
<asp:Login ID="LoginCtrl" runat="server" DestinationPageUrl="YouAreIn.aspx"></asp:Login>
В скрытом коде
Private Sub Log_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles LoginCtrl.Authenticate
If LoginCtrl.UserName = "Hello" AndAlso LoginCtrl.Password = "Hello" Then
e.Authenticated = True
End If
c #
void MyLogin_Authenticate(object sender, AuthenticateEventArgs e)
{
if(UserName == "Hello" && Password == "Hello")
e.Authenticated = true;
}
Если у вас нет поставщика членства и на самом деле нет системы безопасности, о которой можно было бы говорить, просто поместите два поля в форму (имя пользователя, пароль) и протестируйте ее в при нажатии кнопки.
Элемент управления входом явно избыточен для того, что вы пытаетесь сделать.
Вам нужно будет создать собственный провайдер аутентификации и подключить его через web.config. http://www.devx.com/asp/Article/29256