递归方法是程序设计的一种主要手段。事实上,计算机可以识别的语言是递归可枚举语言,可计算的函数是部分递归函数。可见,可计算的问题,一般都可以写成递归处理程序。
例题1 输入一个自然数,试将其表示成质因数乘积的形式。例如:输入140时,则输出:140=2*2*5*7。
- 提示:对要分解的数字m或当前正在尝试的因子n进行递归调用,当m为1时,结束递归调用。
-
要求编写递归程序。
代码如下:#include<stdio.h> /* *求质因数 *参数m: 带分解的数字;n带尝试的因子 */ void priNum(int m,int n) { if(m==1) return ; if(m%n) { priNum(m,n+1); } else { printf("%d",n); if((m/n)!=1) printf("*"); priNum(m/n,n); } } int main(int argc,char* argv[]) { int m1=140,m2=36,m3=54,m4=72; printf("%d=",m1); priNum(m1,2); printf("\n"); printf("%d=",m2); priNum(m2,2); printf("\n"); printf("%d=",m3); priNum(m3,2); printf("\n"); printf("%d=",m4); priNum(m4,2); return 0; }
一个运行结果如下图: