Fortuna abandonó Francia título 5 básicos, problemas de nacimiento vaca class8-

Fortuna abandonó Francia título 5 básicos, problemas de nacimiento vaca class8-

1. Tema

Vaca una vaca que nacen cada año, el crecimiento de la vaca recién nacido después de tres años puede ser una vaca en bruto por año, suponiendo que no morirán. Después de buscar N, el número de vacas.

2. Análisis

Listado primera tabla para encontrar la ley
Aquí Insertar imagen Descripción
se puede ver en la ley: este año, igual a la suma de una vaca ganado el año pasado, además de todo madurar el ganado tiene otro (el número de vacas adultas), entonces, ¿cómo saber el número de ganado adulto que? De acuerdo con el significado real de las preguntas es la suma de hace tres años, ganado (vacas adultas hace tres años, todas ellas completamente puede asegurar la fertilidad, y casi dos años de bovinos nacidos son inmaduros)
el resumen es: F(N) = F(N - 1) + F(N - 3)a saber 今年的牛 = 去年的牛 + 成熟的牛
① recursiva: Después de obtener la ley, muy fácil escribir un código recursivo él! Tenga en cuenta que sólo los tres primeros años de la vaca original, pueden dar a luz, como las condiciones de parada recursivas.
② no recursivo: Número de registro de las vacas durante casi tres años, todavía con F(N) = F(N - 1) + F(N - 3)la demanda

3. Código recursiva

int cow(int n)
{
	if(n <= 0)	return 0;
	if(n == 1 || n == 2 || n == 3)	return n;
	return cow(n - 1) + cow(n - 3);
}

4. no recursiva

int cow1(int n)
{
	if(n <= 0)	return 0;
	if(n == 1 || n == 2 || n == 3)	return n;
	int prepre = 1;
	int pre = 2;
	int res = 3;
	int tmp1 = 0;
	int tmp2 = 0;
	for(int i = 4; i <= n;i++)
	{
		tmp1 = pre;
		tmp2 = res;
		res = prepre + res;

		prepre = tmp1;
		pre = tmp2;
	}
	return res;
}

El código completo

#include<iostream>
#include<string>
using namespace std;
//递归
int cow(int n)
{
	if(n <= 0)	return 0;
	if(n == 1 || n == 2 || n == 3)	return n;
	return cow(n - 1) + cow(n - 3);
}
//非递归
int cow1(int n)
{
	if(n <= 0)	return 0;
	if(n == 1 || n == 2 || n == 3)	return n;
	int prepre = 1;
	int pre = 2;
	int res = 3;
	int tmp1 = 0;
	int tmp2 = 0;
	for(int i = 4; i <= n;i++)
	{
		tmp1 = pre;
		tmp2 = res;
		res = prepre + res;

		prepre = tmp1;
		pre = tmp2;
	}
	return res;
}
int main()
{
	cout<< cow(15);
	cout<< cow1(15);
	return 0;
}
Publicado 51 artículos originales · ganado elogios 1 · vistas 1361

Supongo que te gusta

Origin blog.csdn.net/shi_xiao_xuan/article/details/104827080
Recomendado
Clasificación