|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.12.2009, 18:18 | #1 |
Пользователь
Регистрация: 22.03.2009
Сообщений: 76
|
Си++. Рекурсивная функция.
Здравствуйте. Не могли бы вы помочь с такой задачей: написать рекурсивную функцию для возведения числа 3 в степень, равную некоторому другому числу. Например если передается аргумент 4, то функция возвращает 81.
Вот, что у меня вышло.. #include <stdio.h> #include <stdlib.h> float stepen (float a, int n); int main() { int i; float s,b; long int f; printf("vvedite b: ", b); scanf("%d", &b); printf("vvedite i: ", i); scanf("%d", &i); s=stepen (b,i); printf(" s= ", s); system ("PAUSE"); return 0; } float stepen (float a, int n) { if (n==0) return (1); else if (n<0) return (1/stepen (a,-n)); else return (a*stepen (a,n-1)); } ..но прога не работает..и вообще я очень запуталась..помогите пожалуйста(( |
02.12.2009, 18:35 | #2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
только числа 3? тогда почему у вас написано для общего случая? ) Я так понимаю, это не выделали?)
Ошибки вот в чём: Код:
|
02.12.2009, 18:47 | #3 |
Пользователь
Регистрация: 22.03.2009
Сообщений: 76
|
Да..я взяла из учебника фрагмент..и пыталась что-то понять. Хотя бы на общем примере. Я исправила..но все равно не работает..не понимаю что не так((
|
02.12.2009, 19:32 | #4 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
у меня после этих исправлений работает... покажите как вы исправили
|
02.12.2009, 19:38 | #5 |
Пользователь
Регистрация: 22.03.2009
Сообщений: 76
|
Вот...
#include <stdio.h> #include <stdlib.h> float stepen (float a, int n); int main() { int i; float s,b=3; long int f; printf("vvedite i "); scanf("%f", &i); s=stepen (b,i); printf(" s= %f", s); system ("PAUSE"); return 0; } float stepen (float a, int n) { if (n==0) return (1); else if (n<0) return (1/stepen (a,-n)); else return (a*stepen (a,n-1)); } |
02.12.2009, 19:42 | #6 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Ааа)
%f в scanf и printf ставится для типа float, b у вас типа float, но i типа int, для коего как раз и нужно ставить %d Код:
|
02.12.2009, 19:48 | #7 |
Пользователь
Регистрация: 22.03.2009
Сообщений: 76
|
Блин..ну и тупые у мя ошибки..называется поспешишь..и вот((..спасибо Вам большое))
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
функция | Cpluser | Общие вопросы C/C++ | 2 | 28.02.2009 23:08 |
Задача (рекурсивная) | Witaliy | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 21.01.2009 06:18 |
одна функция потока, а другая функция - член класса запускающего этот поток | Дмитрий_Ч | Общие вопросы C/C++ | 2 | 27.09.2007 08:50 |