输入一正整数,输出等于这个数的所有可能的由小到大的若干正整数相加的式子。用递归来实现
这道题,卡了几个礼拜了,想不出怎么解,求大侠们解惑。输入一正整数,输出等于这个数的所有可能的由小到大的若干正整数相加的式子。
例如:
输入 7
输出:
7=1+6
7=1+1+5
7=1+1+1+4
7=1+1+1+1+3
7=1+1+1+1+1+2
7=1+1+1+1+1+1+1
7=1+1+1+2+2
7=1+1+2+3
7=1+2+2+2
7=1+2+4
7=1+3+3
7=2+5
7=2+2+3
7=3+4
下面自己写的代码只能实现输出“7=1+1+1+1+1+1+1”及之前
#include <stdio.h>
#include <stdlib.h>
int fenjie ( int , int ) ;
int main ()
{
int n , m ;
printf ("请输入一个正整数:\n") ;
scanf_s ("%d", &n) ;
m = n ;
if ( n > 1 )
{
fenjie ( n , m ) ;
}
else
{
printf ("输入不正确。\n") ;
}
system ("pause") ;
return 0 ;
}
int fenjie ( int n , int m )
{
if ( n == m )
{
printf ( "%d=" , m ) ;
}
if ( n >= 2 )
{
printf ( "1+%d\n", n-1 ) ;
if ( n > 2 )
{
printf ("%d=", m ) ;
for ( int tmp = m ; tmp > n - 1 ; tmp -- )
{
printf ( "1+" );
}
}
fenjie ( n - 1 , m ) ;
}
return 0;
}
[此贴子已经被作者于2018-12-3 16:04编辑过]