自然数分解 c++

来源:百度知道 编辑:UC知道 时间:2024/06/30 23:02:09
将一个自然数分解,有多少种方法实现.

例如:3=2+1
3=1+1+1
故3有两种方法...

帮忙写一个任意自然数n的代码实现

有点麻烦,用递归吧
函数fenjie(n)
对于输入n:
1.if n为1
输出 1
2.否则,from 1 to n/2:
1.1 分解 n= i + (n-i)
1.2 对i,n-i用递归分解: fenjie(i),fenjie(n-i)

//VC下实现。有问题的话可以发信息给我。

#include "stdio.h"

int factorization (int n , int m)
{
if ((n < 1) || (m < 1)) return 0 ;

if ((n == 1) || (m == 1)) return 1 ;

if (n < m) return factorization (n , n) ;

if (n == m) return factorization (n , m - 1) + 1 ;

return factorization (n , m - 1) + factorization (n - m , m) ;
}

int main (){
int n;
scanf("%d",&n);
printf("%d",factorization (n, n));
return 0;
}

去掉重复的分解是一个难题,你们怎么让1,1,……,1这种分解只算一次呢?
其实,如果给的数比较大,用递归实现肯定会造成栈溢出。

#include <iostream>
using namespace std ;

void Split(int t) ;
void SplitNum(int n) ;
int a [7]