标题:输入一正整数,输出等于这个数的所有可能的由小到大的若干正整数相加的式子 ...
取消只看楼主
powerfrank
Rank: 2
等 级:论坛游民
帖 子:31
专家分:37
注 册:2018-4-25
结帖率:80%
已结贴  问题点数:10 回复次数:1 
输入一正整数,输出等于这个数的所有可能的由小到大的若干正整数相加的式子。用递归来实现
这道题,卡了几个礼拜了,想不出怎么解,求大侠们解惑。

输入一正整数,输出等于这个数的所有可能的由小到大的若干正整数相加的式子。
例如:
输入 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编辑过]

搜索更多相关主题的帖子: 输入 正整数 输出 int printf 
2018-12-03 15:45
powerfrank
Rank: 2
等 级:论坛游民
帖 子:31
专家分:37
注 册:2018-4-25
得分:0 
回复 3楼 rjsp
谢谢大神
2018-12-04 16:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-491791-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.767482 second(s), 10 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved