首页 > 代码库 > 一天一道算法题---5.24.--递归

一天一道算法题---5.24.--递归

感谢 微信号---code4god  这是他们的微信平台  每日会提供一道算法题   我只是个搬运工

我们每一天都应该比昨天更强一点

观察下列式子:

12 = 12*1
12 = 6*2
12 = 4*3
12 = 3*4
12 = 3*2*2
12 = 2*6
12 = 2*3*2
12 = 2*2*3

对于给定的n 计算n公有多少种不同的分解式?

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int cnt;//记录拆分次数
 5 void slove( int n )
 6 {
 7     if( 1==n )
 8     {
 9         cnt++;
10         return;
11     }
12     else
13     {
14         for( int i = n ; i>=2 ; i-- )
15         {
16             if( n%i==0 )
17             {
18                 slove(n/i);
19             }
20         }
21     }
22 }
23 
24 int main()
25 {
26     int n;
27     while( ~scanf("%d",&n) )
28     {
29         cnt = 0;
30         slove(n);
31         printf( "%d\n",cnt );
32     }
33     return 0;
34 }
View Code

话说  还可以用 所谓的 “备忘录”  可惜目前我实在太渣 自己无法实现  如若有大神能实现 希望能在下方贴出你的代码 大家一起学习!