Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo escribir un programa recursivo para el triángulo de Yang Hui en lenguaje C?

¿Cómo escribir un programa recursivo para el triángulo de Yang Hui en lenguaje C?

Método 1: Escribir usando una matriz bidimensional.

Método 2: Utilizar una función personalizada.

En primer lugar, hay un número 1 en cada uno de los dos lados de la cintura del triángulo de la circunvolución Yang, y los números en otras posiciones son la suma de los dos números superiores. Cualquier fila del triángulo de circunvolución es un coeficiente binomial, n es el número de filas menos 1. n representa el número de filas menos 1, no el número de columnas. Por ejemplo: el tercer número de la quinta fila = 6.

Primero definiremos una matriz bidimensional: a[N][N], ligeramente mayor que el número de líneas a imprimir. a[i][0]=a[i][i-1]=1, n es el número de filas. Cualquier número que no sea los números de ambos lados es la suma de los dos números superiores, es decir, a[i][j]=a[i-1][j-1]+a[i-1][j] . Finalmente, genere el triángulo de la circunvolución yang.

El código de matriz bidimensional del método 1 es el siguiente: #include #define N 14void main(){?int i, j, k, n=0, a[N ][N] ; /*Definir la matriz bidimensional a[14][14]*/? while(n<=0||n>=13){ /*Controlar el número de líneas que se imprimirán y que no se imprimirán. demasiado grande, lo que provocará una visualización irregular* /printf("Ingrese el número de líneas para imprimir:");scanf("%d",&n);?printf("El triángulo de rayos de la línea %d es el siguiente: \n",n);?for(i=1 ;i<=n;i++)a[i][1]=a[i][i]=1;/*Los números en ambos lados lo hacen 1, porque ahora el ciclo comienza desde 1, por lo que se considera que a[i][ 1] es el primer número */?for(i=3;i<=n;i++)for(j =2;j<=i- 1;j++)?a[i][j]=a[i -1][j-1]+a[i-1][j] /* Excepto los números de ambos lados, todos los demás números son iguales; a la suma de los dos últimos números superiores*/?for(i=1;i< =n;i++){for(k=1;k<=n-i;k++)?printf("? "); La línea ocupa principalmente espacio antes de generar los números para hacer que los números de salida sean más hermosos*/for( j=1;j<=i;j++) /*j<=i es porque no se generan otros números, solo los números que queremos a la salida*/?printf("%6d",a[i][j]) ;?printf("\n" /*Cuando finaliza una línea de salida, continúa con la siguiente línea de salida*/?}); ?printf("\n");}

Método 2: Código de función personalizada:

Cualquier número en el triángulo de Yang Hui es igual a un número combinado. #include /*?* Defina factorial, uno podría preguntarse. ¿Por qué utilizar flotador? * Si usa int, se producirá un error después de imprimir varias líneas. * Esto se debe a que la cantidad de factoriales es grande y usar int no sería suficiente.

¿Igual que abajo? */float J(int i){?int j;?float k=1;?for(j=1;j<=i;j++)k=k*j;?return(k);}float C(int i,int j){ /*definir el número combinatorio */?float k;?k=J(j)/(J(i)*J(j-i));?return(k);}void main(){ ?int i=0,j,k,n; /*Imprimir triángulo Yang Hui*/? while(i<=0||i>16){printf("Ingrese el número de líneas para imprimir:");scanf (" %d",&i);?printf("%d línea del triángulo Yang Hui de la siguiente manera:\n",i);?for(j=0;j