这个算法的结果是:给出n的值和k的值,根据公式算出二项式系数值。
算法目的:练习使用递归算法
那么什么是递归呢?
在一个算法中,如果有直接调用自身或间接调用自身的过程,就是一个递归算法。
递归步骤:
1>对应于某些参数求值的一个或多个终止条件。
2>一个递归步骤。它根据先前某次值求当前值。递归步骤最终导致终止条件。
举个例子:
幂函数的递归有一个终止条件,就是n=0时。递归步骤描述了一般情况:
递归介绍完了,接下来介绍部分二项式的内容。
在初等数学中,我们学过关于二项式的一些性质,这里列出我们需要的两条:
好啦,准备工作都已经完成了,现在进行我们这个程序了!
主体程序思想:
终止条件:由二项式系数性质(1),当i=0或i=n时,返回1
递归步骤:由二项式系数性质(2),否则的话,令下标减1,上标不变=n1,下标减1,上标减1=n2,进行调用自己。
主体代码:(C语言)
int binom(int n,int i) { int n1; int n2; if((i == 0) || (i == n)) { return 1; } else { n1 = binom(n-1,i); n2 = binom(n-1,i-1); return n1+n2; } }
最后再附上所有代码:
#include<stdio.h> int binom(int n,int i); int main() { int int1; int int2; printf("\nEnter an integer :\n"); scanf ("%d",&int1); printf("\nEnter a second integer :\n"); scanf ("%d",&int2); printf("\n"); printf("Binomial Coefficiant : %d\n",binom(int1,int2)); return 0; } int binom(int n,int i) { int n1; int n2; if((i == 0) || (i == n)) { return 1; } else { n1 = binom(n-1,i); n2 = binom(n-1,i-1); return n1+n2; } }
运行截图:
好啦,结束了,多多指教~~
时间: 2024-10-23 11:47:11