Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2011, 18:12   #1
andresan
Пользователь
 
Регистрация: 08.11.2009
Сообщений: 33
По умолчанию оператор Case

Дана функция вычисления факториала
Код:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION factorial1 (@n int) 
RETURNS int
AS
BEGIN
	declare @X INT
	declare @i int
    declare @fact int
	select @i=2
	select @x=1
while @i<=@n begin
select @x=@x*@i
select @i=@i+1
end
select @fact=@x
	RETURN @fact 

END
GO
нужно Самостоятельно доработать данную функцию, чтобы она вычисляла факториал числа для 0 и 1 с использованием оператора case
andresan вне форума Ответить с цитированием
Старый 16.05.2011, 11:58   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
CREATE FUNCTION factorial1 (@n int) RETURNS int AS
BEGIN
  declare @X INT,
          @i int
  select @i=0
  select @x=1
  while @i<=@n begin
    select @x=@x*(CASE WHEN @i=0 THEN 1 ELSE @i END)
    select @i=@i+1
  end
  RETURN @x 
END
GO
Имейте ввиду - возможно переполнение для достаточно большого аргумента
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.05.2011 в 12:01.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оператор case Степан sapral Общие вопросы C/C++ 4 21.02.2011 11:54
оператор case of wlll Помощь студентам 4 10.11.2010 19:09
оператор выбора case of wlll Помощь студентам 1 09.11.2010 21:59
Исправте ошибку(оператор case и if) neomaximus Помощь студентам 9 29.11.2008 11:36
Оператор case Yermek Помощь студентам 3 12.10.2008 18:06