Các bác hướng dẫn ý tưởng giúp e với :
Liệt kê vị trí ở đó các phần tử là nguyên tố trong mảng một chiều các số nguyên dương.
Chỉ dùng đệ quy. Không dùng vòng lặp.
Đệ quy liệt kê vị trí các phần tử là số nguyên tố trong mảng một chiều
Chú ý khi dùng đệ quy là điều kiện dừng đệ quy, hay trường hợp đơn giản nhất.
Vậy bạn thử nghĩ xem khi nào thì nên dừng đệ quy.
mình nghĩ điều kiện dừng là nếu mảng có 1 phần tử và phần tử đó là số nguyên tố thì return vị trí là 0, ngược lại return -1 nghĩa là không có. Còn cái đoạn phía sau không biết làm sao
Chỗ này là đúng rồi.
Sao lại là return 0 mà không phải một số nào khác.
Đề chỉ nói liệt kê vị trí là snt, return -1 để làm gì. :V
Đúng ra dùng void
là đủ rồi chứ.
mình nghĩ return 0 vì vị trí của nó bằng 0, còn hàm void không biết viết sao. Nếu bạn biết thì giúp mình với
Thực ra là không cần return gì cả, yêu cầu là liệt kê (in ra màn hình) cơ mà. :V
Suýt thì bỏ qua, nếu mảng rỗng thì sao.
Gợi ý thêm nữa, vì đề kêu là in ra vị trí, vậy làm thế nào để biết vị trí của phần tử hiện tại trong mảng ban đầu?
Mảng luôn có phần tử (thầy nhập vào).
Còn đoạn sau thì mình chịu Giúp với bạn ơi
Có gì để đảm bảo thầy không nhập một mảng rỗng không.
Thôi thì viết tạm cho bạn thế này xem bạn có hình dung ra không.
void sher(int *a, int n, int i) {
if (i >= n) return;
if (isPrime(a[i])) printf("%d ", i + 1);
sher(a, n, i + 1);
}
int main(){
int a[] = {1, 2, 4, 5, 7, 3, 10};
sher(a, 7, 0);
}
Cảm ơn bạn nhiều, mình hiểu rồi. Kiểm tra từng phần tử từ 0 tới n -1, nếu là số nguyên tố thì in ra. Nếu i >= n thì thoát.