Hỏi về thuật toán lập trình c tính căn lồng

Nhập nó nguyên N và tính giá trị hàm F dưới đây:
image

Ví dụ n = 5, nếu giải tay thì bạn sẽ làm như thế nào

5 Likes

Bạn nên đăng code của bạn lên đây chứ chỉ đăng câu hỏi thế không đúng quy tắc của công đồng daynhauhoc đâu ạ : D.

3 Likes

Đây là code của mình ạ

#include <stdio.h>
#include <conio.h>
#include <math.h>

int main()
{
	int N,i;
	float s=0;
	do {
		printf("N = ");
    	scanf("%d",&N);
	} while(N<=0);
	for(i=1;i<=N;i++) {
		s=sqrt((s+sqrt(i)));
	}
	printf("F(n) = %f",s);
	return 0;
}

em nghĩ mãi không biết sửa kiều gì ạ

Bạn sai chỗ thuật toán rồi, bạn xem chỗ vòng lặp for, lần lặp thứ nhất i=1 thì s lúc đó bằng gì, lần lặp thứ 2 i=2 thì lúc đó s là biểu thức gì,… Như code của bạn thì tính một cái F(n) hoàn toàn khác với đề bài cho

4 Likes

Đây là code sau khi mình sửa ạ

#include <stdio.h>
#include <conio.h>
#include <math.h>

int main()
{
	int N,i;
	float s=0;
	do {
		printf("N = ");
    	scanf("%d",&N);
	} while(N<=0);
	for(i=N;i>=1;i--) {
		s=sqrt(i+s);
	}
	printf("F(n) = %f",s);
	return 0;
}
2 Likes

sử dụng hàm đệ quy đơn giản hơn nhiều nhé bro!

#include<stdio.h>
#include<math.h>

double tong(int n)
{
if (n==1)
 return 1;
 else
 return (sqrt(n)+tong(n-1));
}
int main()
{int n;
printf(" nhap so phan tu n ");
scanf("%d",&n);
printf(" ket qua la : %lf",tong(n));
}
2 Likes

@Chi_Minh_Nguyen, @dontforgetme161 các bạn nên định dạng mã markdown. Mình đã sửa cho các bạn, lần sau chú ý.

3 Likes

Đệ quy sai rồi bro.
Đề bài nay mình nghĩ không dùng được đệ quy

Theo công thức truy hồi thì phải dừng lại ở n chứ không phải ở 1, nên chỉ có đệ quy đuôi thôi :smiley:

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