本文介绍了错过了逻辑使用recurssion寻找总和,得到了段错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图实现使用recurssion以下,但即时得到段错误请指正??

我试图用一套置换解决问题{1,} 3,5,7但未能输出所需的结果
    打印奇数份数,即对于n = 8的所有组合物:
    7 + 1

    5 + 3

    5 + 1 + 1 + 1

    3 + 3 + 1 + 1

    3 + 1 + 1 + 1 + 1 + 1

    1 + 1 + 1 + 1 + 1 + 1 + 1 + 1

sumto8(一,启动,SUM1)是://选择关注的元素
sumto8(一,启动,和)://选择关注的元素

 #包括LT&;&iostream的GT;
#包括LT&;&stdio.h中GT;INT sumto8为(int *,INT,INT);
INT N = 4;
INT C = 8;诠释的main()
{
    诠释一个[] = {1,3,5,7};
    sumto8(一,0,C);
}INT sumto8为(int *一,诠释开始,诠释和)
{
   如果((总和℃,)||(开始>(N-1)))
   返回-1;   如果(总和== 0)
   {
       COUT<<<< A [开始]。
       返回的printf(%d个,一个[开始]);
   }
   如果(ⅰ== - 1)
      {
       返回-1;
      }
      如果(J == - 1)
      {
        返回-1
      }
   其他
   {
      INT SUM1 = SUM-A [开始]。
      INT I = sumto8(一,启动,SUM1);      INT J = sumto8(一,启动+ 1,总和);
   }   返回的printf(%d个,一个[开始]);
}

看来,如果条件求和℃下不检查正常...

 输出:段错误


解决方案

你说

i found out that your checking like this

   if((sum<0) && (start>(n-1)))
   return -1;

how if the "and" you change it to "or"

   if((sum<0) || (start>(n-1)))
   return -1;

这篇关于错过了逻辑使用recurssion寻找总和,得到了段错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-06 05:26