Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
okaio
0 / 0 / 1
Регистрация: 13.01.2016
Сообщений: 28
1

Ошибка сегментации

22.03.2016, 02:55. Просмотров 210. Ответов 2
Метки нет (Все метки)

всем здраствуйте.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 double power(double n, int p) //определение функции
 22   {
 23       if (n ==0 && p == 0)
 24       {
 25           printf ("результат неопределен\n");
 26           return 0;
 27       }
 28       double pow;
 29     if (p == 0)
 30         return 1;
 31     else if (p > 0)
 32     {   
 33         pow = n *  power (n, p--);
 34 }
 35 return pow;
 36 }
пишет ошибка сегментации. но по идее значению pow присваивается произведение n (допустим 2), если p было 2, то в вызове 2го порядка снова pow =n * (только уже pow =1 тк если 0 то возвращает единицу). почему ошибка сегментации?
пс. надо через рекурсию по условию функцию. через цикл все норм. заранее спасибо

Добавлено через 13 часов 41 минуту
ошибка нашлась вместо p-- написал p-1. но встал вопрос почему не работает дискремент?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2016, 02:55
Ответы с готовыми решениями:

Ошибка сегментации
собственно прикрепляю проект (code::blocks). при запуске вылетает ошибка. почему - хз.

Ошибка сегментации
Задача: В двух файлах дано 2 массива. Вывести эти 2 массива в третий файл в отсортированном виде....

Ошибка сегментации
# include <sys/types.h> # include <sys/times.h> # include <sys/socket.h> # include <stdio.h> #...

Ошибка сегментации
Написал программу, которая по схеме Горнера преобразует многочлен до квадратного уравнения. По...

Ошибка сегментации gcc
Здравствуйте, уважаемы форумчане) Пытаюсь реализовать шифр Плейфера. Компилируется нормально,...

2
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4848 / 2492 / 696
Регистрация: 18.10.2014
Сообщений: 4,326
22.03.2016, 03:34 2
Цитата Сообщение от okaio Посмотреть сообщение
но встал вопрос почему не работает дискремент?
А с чего вы взяли, что он не работает??? По определению пост-декремента значением выражения p-- является старое (исходное) значение p, а не новое (уменьшенное) значение. Вот вы одно и то же исходное значение и передаете во все уровни рекурсии. Переменная p при этом исправно уменьшается, но никто этого не видит.

Если вы хотите передавать на следующий уровень новое (уменьшенное) значение p, то надо было делать --p. Но здесь вообще уместнее просто p - 1.
1
okaio
0 / 0 / 1
Регистрация: 13.01.2016
Сообщений: 28
22.03.2016, 11:50  [ТС] 3
спасибо. т.е. получается. что в переменую pow записывается бесконечное число рекурсий?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2016, 11:50

Непонятная ошибка сегментации
Собственно код #include <stdio.h> #include <math.h> #include <unistd.h> #include <stdlib.h>...

Указатели на структуру - ошибка сегментации
всем привет! разбираюсь с указателями на структуру и realloc ставит в тупик.. то есть код работает,...

Парсинг строки и ошибка сегментации
Здраствуйте. Нужно было распарсить строчку. Взялся за strtok. Написал небольшой пример, для себя,...


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

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

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