30/09/2018, 16:07

Chuyển đổi thuật toán dùng mảng một chiều không đúng kết quả

bạn Hải Nguyễn
Hỏi mình một câu như sau :
vì chưa hiểu về mảng lắm. hôm trước thầy cho em 1 bài và yêu cầu làm theo 2 cách là dùng hàm và mảng.
https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpf1/v/t35.0-12/10800123_500232206782919_1620167905_o.jpg?oh=338262fe155542b99309fba7545e8d03&oe=5467A93C&gda=1416065388_5d3fe85fe0b11708baffcd470c809872
e làm hàm thì chạy đúng kết quả nhưng khi e viết mảng thì lại chạy sai, e k hiểu tại sao nữa

#include<stdio.h>
#include<conio.h>
void main()
{
	int n,i=3;
	int f[1000];
	// dua vao con thuc tinh f2 de tinh ra duoc gia tri f2
	do 
	{
		printf(" nhap n:");
		scanf(" %d", &n);
	}
	while (n<1||n>10000000);
		f[1]=1; f[2]=2;// dung cong thuc de tinh ra gia tri f2
	for (int i=3;i<=n;i++)
	{
	     f[i]=i*(f[i-1]+f[i-2]);
//f[i-1]=f[i]; 
	}
	    printf(" f = %d", f[n]);// in ra tong f
		getch();
}
//xem lai

Có bạn nào giúp được bạn Hải Nguyễn không ?

Phạm Hoàng Tuấn viết 18:22 ngày 30/09/2018

vì thuật toán của bạn chạy chưa đúng. Mình có sửa lại, bạn xem chạy ok không ?

// 123.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<stdio.h>
#include<conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
	int n,i=3;
	int f[1000];
	// dua vao con thuc tinh f2 de tinh ra duoc gia tri f2
	do 
	{
		printf(" nhap n:");
		scanf(" %d", &n);
	}
	while (n<1||n>10000000);
	f[1]=1; f[2]=2;
	for (int i=3;i<=n;i++)
	{
		int s=0;
		for(int j=1;j<i;j++)
		{
			s=s+f[j];
		}
		f[i]=i*s;
	}
	printf(" f = %d", f[n]);// in ra tong f
	getchar();
	return 0;
}



Thực tế khắc nghiệt viết 18:07 ngày 30/09/2018

mấy bác cho e hỏi bài 5 công thức j tô đậm to kia là sao? e hỏi để e làm thử! e k có trường lớp vì vây bài tập cũng ít mà bài khó thì thua! cái nào đã học thì chắc giải được! bác cứ giải thích cho e bằng lời là Fn tính như thế nào?

Phạm Hoàng Tuấn viết 18:09 ngày 30/09/2018

Theo mình đoán là vậy: (Gà toán lắm ):
Bài 5 : Số thứ n= n * (tổng các F của số đứng trước đó).
Ví dụ :
F(1)=1
F(2)=2 *F(1)
F(3)= 3 * ( F(2) + F(1) )
F(4)= 4 * ( F(3) + F(2) + F(1) )

Bài liên quan
0