Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
sprocket
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 22
#1

Оператор return - C++

04.07.2012, 16:01. Просмотров 1459. Ответов 12
Метки нет (Все метки)

Помогите пожалуйста разобраться как работает оператор return.
Что происходит после return n и после return fibonacci (n-1) + fibonacci (n-2);

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
unsigned long fibonacci (unsigned long);
 
main()
{ 
unsigned long result, number;
cout <<  "Введите целое число :"
cin >> number ;
cout << "Число Фибоначчи("<< number<< ")= " << result << endl;
return 0;
}
unsigned long fibonacci (unsigned long n)
{ 
if (n==0 || n==1 )
return n;
else 
return fibonacci (n-1)  + fibonacci (n-2);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2012, 16:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оператор return (C++):

Оператор return - C++
Всем привет, мне необходимо передать полученный массив в другой файл, читала где-то, что это можно сделать при помощи оператора return, но...

Оператор return; - C++
В коде одного примера встретился оператор return; Который просто ничего не возвращает. Вот часть кода: void PartList::Iterate(void...

Как использовать оператор return? - C++
При запуске возникает ошибка, связанная с тем, что функция должна вернуть значение. Подскажите, что требуется подставить для return (строки...

Оператор запятая в return и задача - C++
Всем ДВС! Разъясните пожалуйста, почему тимус принимает #include &lt;cstdio&gt; #include &lt;cstdlib&gt; const int MAXN = 1 &lt;&lt; 5; ...

Не работает оператор return в рекурсивной функции - C++
Писал курсач реализовать игру в калах. В коде в функции solve_computer() в 112 строчке не срабатывает оператор return. Понятия не имею...

С++, оператор return. ПОдскажите, почему не работает? - C++
нужно, чтобы линейная программа завершалась, если выполняется условие. Но даже если условие не выполняется, совершается выход из...

12
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
04.07.2012, 16:32 #2
sprocket, функция может возвращать значение. Зачем? ну например, что бы каждый раз не писать x*x можно создать функцию "double sqr(double a){ return a*a; }", в которую будет передаваться значение и она будет возвращать его квадрат
0
Саня gamer
97 / 71 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
04.07.2012, 16:34 #3
Цитата Сообщение от sprocket Посмотреть сообщение
Помогите пожалуйста разобраться как работает оператор return.
Что происходит после return n и после return fibonacci (n-1) + fibonacci (n-2);

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
unsigned long fibonacci (unsigned long);
 
main()
{ 
unsigned long result, number;
cout <<  "Введите целое число :"
cin >> number ;
cout << "Число Фибоначчи("<< number<< ")= " << result << endl;
return 0;
}
unsigned long fibonacci (unsigned long n)
{ 
if (n==0 || n==1 )
return n;
else 
return fibonacci (n-1)  + fibonacci (n-2);
}
должно быть так
если условие выполняется то возвращаеться значение переменной н
а если нет то fibonacci (n-1) + fibonacci (n-2)
0
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
04.07.2012, 16:34 #4
sprocket,

C++
1
2
3
4
5
6
7
unsigned long fibonacci (unsigned long n)
{ 
if (n==0 || n==1 )
return n;
else 
return fibonacci (n-1)  + fibonacci (n-2);
}

Эта функция рекурсивная. То есть она вызывает сама себя. Как конечное значение она возвращает n-ное число фибоначи

Добавлено через 36 секунд
ЗЫ:

C++
1
2
if (n==0 || n==1 )
return n;
Да ну?
return 1;
0
Саня gamer
97 / 71 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
04.07.2012, 16:36 #5
она же вроди не вызывается из main
0
Dragokas
Эксперт WindowsАвтор FAQ
16000 / 6817 / 821
Регистрация: 25.12.2011
Сообщений: 10,555
Записей в блоге: 16
04.07.2012, 20:21 #6
Значит оператор пропустили:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
unsigned long fibonacci (unsigned long);
 
int main()
{
    system("chcp 1251>>null");
    unsigned long result, number;
    std::cout <<  "Введите целое число :";
    std::cin >> number;
    result = fibonacci(number);
    std::cout << "Число Фибоначчи("<< number<< ")= " << result << "\n";
    system ("pause>>null");
    return 0;
}
 
unsigned long fibonacci (unsigned long n)
{
    if (n==0 || n==1)
        return n;
    else
        return fibonacci(n-1) + fibonacci(n-2);
}
0
sprocket
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 22
04.07.2012, 22:34  [ТС] #7
А в этой задаче мы нашли max и возвращаем его в первую функцию но зачем он впервой если там нету max и почему именно return max (а не return maxi или что то тому подобное)?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream.h>
int maximum(int,  int,  int);  
main
 {
int a, b, c;
 
cout << "Введите три целых числа: "; 
cin >> а >> b >> с;
cout << "Максимум равен " << maximum (a, b, с) << endl;
 return 0;
}
 
 int maximum(int x,  int y,  int z) 
{
int max = x;
 
if  (y > max)
max = y; 
if  (z > max)
max = z;
 
return max;
}
0
Leomana
59 / 59 / 5
Регистрация: 29.06.2012
Сообщений: 188
04.07.2012, 22:48 #8
Цитата Сообщение от sprocket Посмотреть сообщение
А в этой задаче мы нашли max и возвращаем его в первую функцию но зачем он впервой если там нету max и почему именно return max (а не return maxi или что то тому подобное)?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream.h>
int maximum(int,  int,  int);  
main
 {
int a, b, c;
 
cout << "Введите три целых числа: "; 
cin >> а >> b >> с;
cout << "Максимум равен " << maximum (a, b, с) << endl;
 return 0;
}
 
 int maximum(int x,  int y,  int z) 
{
int max = x;
 
if  (y > max)
max = y; 
if  (z > max)
max = z;
 
return max;
}
О_о ухаха.. ничего себе вопросы.. ну ладно . Функция maximum возращает max ,других переменных вообще и нет, о каких maxi и подобных ваще идет речь? Возвращается обратно не само "max", а значение (число), которое в нем хранится. Просто число попадает в "cout << "Максимум равен " << сюда..", которое выводится на экран
0
sprocket
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 22
04.07.2012, 23:00  [ТС] #9
а почему return max а возвращается в maximum?
0
Leomana
59 / 59 / 5
Регистрация: 29.06.2012
Сообщений: 188
04.07.2012, 23:02 #10
Цитата Сообщение от sprocket Посмотреть сообщение
а почему return max а возвращается в maximum?
возвращается не в maximum, а в main, там где вызвали функцию maximum
0
Dragokas
Эксперт WindowsАвтор FAQ
16000 / 6817 / 821
Регистрация: 25.12.2011
Сообщений: 10,555
Записей в блоге: 16
04.07.2012, 23:19 #11


C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main()
{
  int a, b, c;
  std::cout << "Введите три целых числа: "; 
  std::cin >> a >> b >> c;
  std::cout << "Максимум равен " << (a>b ? (a>c ? a : c) : (b>c ? b : c)) << "\n";
  return 0;
}
Это как нужно извращаться, чтобы выкладывать пример с переменными разных ASC-кодов одной и той же буквы.
0
sprocket
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 22
04.07.2012, 23:29  [ТС] #12
В первой функции мы вводим a,b,c как они попадают во вторую функцию и почему мы возвращаем max а выводится maximum?
Возможно подскажите литературу, читаю Дейтела может что то другое?
0
Leomana
59 / 59 / 5
Регистрация: 29.06.2012
Сообщений: 188
04.07.2012, 23:46 #13
Цитата Сообщение от sprocket Посмотреть сообщение
В первой функции мы вводим a,b,c как они попадают во вторую функцию и почему мы возвращаем max а выводится maximum?
Возможно подскажите литературу, читаю Дейтела может что то другое?
тщательно читайте книги тщательно! А то мне кажется это слишком странные вопросы. Очень хорошо разжевывается (как мне кажется) в книге Шилдт. Происходит вызов функции maximum, там где maximum(a,b,c), и в int x, int y, int z попадают эти a,b,c соответственно. Вы программу запускали хоть? Если мы будет maximum(1,2,3), в max попадет 3. Эта 3ка возвращается там где maximum(1,2,3) (как бы вместо этого вызова). И на экран распечатается "Максимум равен 3"
1
04.07.2012, 23:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2012, 23:46
Привет! Вот еще темы с ответами:

Как работает оператор cout и return? - C++
Допустим есть функция: int show() { int g = 5; cout &lt;&lt; (g&gt;7)?1:2; return g&gt;7?1:2; }return на выражение g&gt;7?1:2...

Переменные при использовании шаблонов. Оператор return - C++
Доброго времени суток. В домашнем задании на первом семестре обучения поставлена задача: написать перегруженные шаблоны функций для...

В чем разница между return и return false/true - C++
Привет всем. Вот подскажите плиз) return; return false; return true; расскажите пожалуйста об етих операторах.. чем они...

Как сделать так, что если файл существует return true, если нет - return false - C++
Здравствуйте, я новичок в программировании. Мой вопрос очень прост: как сделать так, что если файл существует return true если нет return...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru