Đổi chữ in thành chữ thường và ngược lại

Em code thế này thì bị báo lỗi stack overflow gì đó, mọi người xem và chỉnh giúp em với ạ :frowning:

#include "pch.h"
#include <iostream>
#include <math.h>

using namespace std;

int stringLength(string s)
{
	int i = 0;
	while (s[i] != '\0') i++;
	return i;
}
void reverseUpperLower(char* initialString) {
	
	int run = 0;
	if (initialString[run] >= 61 && initialString[run] <= 122) initialString[run] = initialString[run] - 32;
	else if (initialString[run] >= 65 && initialString[run] <= 90) initialString[run] = initialString[run] + 32;
	run++;
	if (run == stringLength(initialString))
	{
		cout << initialString;
		return;
	}

	return reverseUpperLower(initialString);
}

int main()
{
	char ten[] = "Boy Love Girls";
	reverseUpperLower(ten);
	return 0;
}

Gọi hàm reverserUpperLower() không ngừng nghỉ thế này bảo sao tràn stack. :slight_smile:

2 Likes

Nhưng em nghĩ là dùng điều kiện run để dừng nó lại nhưng vẫn không được ạ :frowning:

Bạn thớt hơi “tham” (?!) hàm làm 2 việc cùng lúc thì viết và đọc đều hại não ấy mà.

3 Likes

run mãi mãi bằng 1.

2 Likes

Sử dụng đệ quy thì bạn nên xem xét kỹ điều kiện dừng đệ quy.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?