right4   right2
Караганда-НМ.KZ
Форум Регистрация Фотоальбомы 3D тур Правила Календарь Все форумы прочитаны
left1 left2

Вернуться   Караганда-НМ.KZ > Информационные технологии > Программирование

Важная информация

KNM
Ответ
 
Опции темы
Старый 03.07.2007, 17:38   #1
Valjuscha
Новичок
Возраст: 32
Valjuscha там
 
Регистрация: 17.02.2006
Сообщений: 10
Репутация: 10
Вес репутации: 0
Надо написать программу для функции int f_iter(int n){..}.

Здравствуйте.
Готовлюсь на экзамен и возникла вот такая проблема:
Надо написать программу для функции int f_iter(int n){..}.
Эта функция возращает назад 1,если n = 0,
3, если n = 1 и
f(n/2) * f(n/2) если n > 1.
только использовать рекурсивную формулировку нельзя.
Если есть добрые люди,готовые помочь,то могу послать отсканнированое задание.(Оно,правда,на немецком).
Большое спасибо за внимание!!
 
Ответить с цитированием
Сегодня
Местный
Реклама

__________________

...
Старый 03.07.2007, 18:50   #2
cis-trans
Местный
Аватар для cis-trans
cis-trans там
 
Регистрация: 12.04.2003
Сообщений: 801
Репутация: 5287
Вес репутации: 68
давай задание
cis-trans@yandex.ru
 
Ответить с цитированием
Старый 03.07.2007, 18:54   #3
НечистЪ
Заблокирован
Мальчик 33
НечистЪ там
 
Регистрация: 16.04.2003
Сообщений: 3,174
Репутация: 496
Вес репутации: 0
отсканирование задание можно и сюда вставить...

язык какой?
 
Ответить с цитированием
Старый 03.07.2007, 18:58   #4
Valjuscha
Новичок
Возраст: 32
Valjuscha там
 
Регистрация: 17.02.2006
Сообщений: 10
Репутация: 10
Вес репутации: 0
Re: Надо написать программу для функции int f_iter(int n){..

Язык C .И вам еще раз спасибо за внимание:-)
 
Ответить с цитированием
Старый 03.07.2007, 21:22   #5
cis-trans
Местный
Аватар для cis-trans
cis-trans там
 
Регистрация: 12.04.2003
Сообщений: 801
Репутация: 5287
Вес репутации: 68
Re: Надо написать программу для функции int f_iter(int n){..

такое задание

Добавлено через 1 час 12 минут 40 секунд:
Код:
int f_iterative(n){
    int result,exponent;
    exponent = 2;    // weil f()=f()*f()=f()^2

    // mit der Schleife stellen wir fest,
    // wie oft n/2 durchgefuehrt werden kann.
    while (n>1){

        // casting, damit z.B. 0,75 zur 0 geaendert wird
        (int)n=n/2;
        
        // bei jeder Stufe muesste f()=f()*f(), daher:
        exponent=exponent*2;
    }
    if(n==0)
        result = 1;
    else if(n==1)
        reuslt = 3;
    else     // Fehlerbehandlung bei n<0? 
        return -1;
    
    //entweder Basis 1 oder 3 werden entsprechend der
    //Anzahlr der Iterationen potenziert
    result=result^exponent;
    return result;
}
функция f(n) в конечном итоге возвращает 1 или 3
ну, а потом надо проводить (в случае с тройкой)
[(3*3) * (3*3)] * [(3*3) * (3*3)] и т.д.
каждая матрёшка - это квадрат внутренней т.е. 4ая степень позапрошлой
отсюда exponent=exponent*2;

а количество итераций это
n=2^x (где X количество итераций)
x=log(2)n;

только кто-то правильность бы должен подтвердить ) можешь сама, опытным путём.
вроде как правильно.
не проверял.

Добавлено через 29 минут 16 секунд:
может быть, что заданию больше соответствует решение, когда
вместо
result = result^exponent;
будет
while(iterations>=0)
{
result = result*result;
iteration--;
}

тогда в первом цикле надо вместо
exponent=exponent*2;
взять
iterations++;
Изображения
Тип файла: jpg scan_3_7_2007_13h35m32s_781.jpg (52.9 Кб, 33 просмотров)
 
Ответить с цитированием
Старый 03.07.2007, 22:30   #6
Valjuscha
Новичок
Возраст: 32
Valjuscha там
 
Регистрация: 17.02.2006
Сообщений: 10
Репутация: 10
Вес репутации: 0
Re: Надо написать программу для функции int f_iter(int n){..

Большущее тебе спасибо:-) Я поняла теперь идею,смысл итд. :P
 
Ответить с цитированием
Ответ

Опции темы

Ваши права в форуме
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 05:27. Часовой пояс GMT +6.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Время генерации страницы 0.05108 секунды с 10 запросами