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

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

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

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

04.07.2012, 16:01. Просмотров 1412. Ответов 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);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2012, 16:01     Оператор return
Посмотрите здесь:

C++ Оператор return;
C++ Return
C++ С++, оператор return. ПОдскажите, почему не работает?
Return C++
Оператор return C++
C++ Переменные при использовании шаблонов. Оператор return
C++ return
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
04.07.2012, 16:32     Оператор return #2
sprocket, функция может возвращать значение. Зачем? ну например, что бы каждый раз не писать x*x можно создать функцию "double sqr(double a){ return a*a; }", в которую будет передаваться значение и она будет возвращать его квадрат
Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
04.07.2012, 16:34     Оператор return #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)
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
04.07.2012, 16:34     Оператор return #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;
Саня gamer
96 / 70 / 1
Регистрация: 18.05.2011
Сообщений: 343
Записей в блоге: 1
04.07.2012, 16:36     Оператор return #5
она же вроди не вызывается из main
Dragokas
Эксперт WindowsАвтор FAQ
14900 / 6503 / 792
Регистрация: 25.12.2011
Сообщений: 10,042
Записей в блоге: 15
04.07.2012, 20:21     Оператор return #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);
}
sprocket
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 22
04.07.2012, 22:34  [ТС]     Оператор return #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;
}
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
04.07.2012, 22:48     Оператор return #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 << "Максимум равен " << сюда..", которое выводится на экран
sprocket
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 22
04.07.2012, 23:00  [ТС]     Оператор return #9
а почему return max а возвращается в maximum?
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
04.07.2012, 23:02     Оператор return #10
Цитата Сообщение от sprocket Посмотреть сообщение
а почему return max а возвращается в maximum?
возвращается не в maximum, а в main, там где вызвали функцию maximum
Dragokas
Эксперт WindowsАвтор FAQ
14900 / 6503 / 792
Регистрация: 25.12.2011
Сообщений: 10,042
Записей в блоге: 15
04.07.2012, 23:19     Оператор return #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-кодов одной и той же буквы.
sprocket
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 22
04.07.2012, 23:29  [ТС]     Оператор return #12
В первой функции мы вводим a,b,c как они попадают во вторую функцию и почему мы возвращаем max а выводится maximum?
Возможно подскажите литературу, читаю Дейтела может что то другое?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2012, 23:46     Оператор return
Еще ссылки по теме:

с++ while return C++
Как работает оператор cout и return? C++
Как использовать оператор return? C++
Не работает оператор return в рекурсивной функции C++
C++ Оператор запятая в return и задача

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

Или воспользуйтесь поиском по форуму:
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
04.07.2012, 23:46     Оператор return #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"
Yandex
Объявления
04.07.2012, 23:46     Оператор return
Ответ Создать тему
Опции темы

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