Colección de citas famosas - Slogan de motivación - Problema del coco marinero de programación en lenguaje C. Escribí un programa y la respuesta es incorrecta.

Problema del coco marinero de programación en lenguaje C. Escribí un programa y la respuesta es incorrecta.

También he pensado en este tema durante mucho tiempo. Después de leer muchos métodos en Internet, di directamente la fórmula para calcular. Yo mismo encontré el patrón de este problema y lo resolví mediante iteración y recursividad inversa. El código específico es el siguiente: (El programa tiene comentarios. Se recomienda que haga un dibujo para ver cómo se ve la situación con diferentes números de marineros, para que pueda entenderlo)

#Include ? & ltstdio.h & gt

# incluir & ltstdlib.h & gt

# incluir & ltmath.h & gt

main()

{

int? ¿norte? ;? //Número de marineros

printf("Input?n(1<n<=5):\n");

scanf("%d ",& ampn );

//Aumentar la robustez del programa

If (n & gt1. & ampn & lt=5)

printf("y=%d \n ",Coconu?(n));

Otro

printf("¡Error!\n");

Sistema("pausa");

}

int? ¿Coconú? (int?n)

{

int? ¿I? ;? //Variable de bucle interno

int? j = 1;? //Variable de bucle externo,

int? s;? //El número original de cocos

int? r;? //¿Qué hace la variable de iteración

? //Primer ciclo: Después de la participación promedio del último marinero, aumenta el número de cocos por participación, comenzando desde 1 (el valor mínimo es 1).

{

r=j*n+1? ;? //El número total de cocos del último marinero

//? El segundo ciclo: obtiene el número original de cocos mediante iteración y recursividad inversa.

for(I = n-1;I>0;I-)

{

//? Durante el proceso de iteración, si la recursividad inversa es inseparable, saltará fuera del bucle. (Porque el coco debe estar entero)

if(r%(n-1)!=0)

Romper;

//?Repetir p>

s =(r/(n-1))* n+1;

r = s;

}

j++ ;

}Y (I!=0);? //i=0 indica que el ciclo se completa y el ciclo completo S es el número final de cocos originales.

¿Volver? s;

}