싱글 링크드리스트 스택과 재귀함수를 이용하여 제곱을 구하는 프로그램을 공부하고 있습니다 !
코딩을 하다가 아이디어가 막혀서 질문드려요 ㅠㅠ
제가 여쭤보고 싶은건, 제곱을 구하는 함수의 알고리즘을 어떻게 구상해야 하는지인데요,
*일반적으로 제곱을 재귀함수를 이용했을 때 코드는
int power( int a, int b)
{
if ( b == 1)
return a;
else
return power(a*2 , b-1);
}
이런식이라고 합니다. 이걸 링크드리스트에 적용시키려고 하니 혼란스럽습니다 ㅠㅠ
typedef struct Node {
int data;
struct Node *link;
}Node;
typedef struct{
Node *top;
}LinkedStack;
노드와 스택을 구성하는 구조체는 대략 이런 모양입니다.
//제곱을 구하는 함수 a의 b제곱을 구하는 함수라고 가정했을 때, 저는 인자로 링크드리스트와 a, b (a의 b제곱)을 주었습니다.
int pow ( 링크드리스트,int a, int b)
{
if ( ){ // 함수 호출 종료 포인트
top에 있는 데이터를 peek
}
else { // 재귀 호출 포인트
push를 해주며 스택에 데이터를 쌓음. pow 를 다시 호출
}
}
이런 식으로 해야할 것 같은데 알고리즘 구체화 하려고하니 어렵더라고요 ㅠㅠ
어떤 식으로 생각해야 할 지 조언 부탁드립니다 ㅠ_ㅠ 혹시 참고할만한 링크 알고계신 분들도 답변 부탁드립니다 ㅠ_ㅠ