程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 返回值-為什麼最後輸出結果會是0?當被調函數中的if語句不成立時不想要它返回該如何?

返回值-為什麼最後輸出結果會是0?當被調函數中的if語句不成立時不想要它返回該如何?

編輯:編程綜合問答
為什麼最後輸出結果會是0?當被調函數中的if語句不成立時不想要它返回該如何?
#include<stdio.h>

char a[15];
int count=0;

int fun(int store,int flower,int wine,int i)
{
    if(store>5 || flower>10)
        return 0;
    else if(store==5 && flower==10 && i==15)
    {
        if(wine==0 && a[14]=='b')
        {
            count++;
        }
    }
    a[i]='a';
    fun(store+1,flower,wine*2,i+1);
    a[i]='b';
    fun(store,flower+1,wine-1,i+1);
    return count;
}

void main()
{
    printf("%d\n",fun(0,0,2,0));
} 
    題目描述:

話說大詩人李白,一生好飲。幸好他從不開車。 無事街上走,提壺去打酒。
逢店加一倍,遇花喝一斗。
這一路上,他一共遇到店5次,遇到花10次,已知最後一次遇到的是花,他正好把酒喝光了。

請你計算李白遇到店和花的次序,可以把遇店記為a,遇花記為b。則:babaabbabbabbbb 就是合理的次序。像這樣的答案一共有多少呢?請你計算出所有可能方案的個數(包含題目給出的)。

為什麼最後輸出結果會是0?當被調函數中的if語句不成立時不想要它返回該如何?

最佳回答:


不需要具體方案的程序見下面代碼。
如需要打印具體方案,參見我的博客(可能還在待審狀態,csdn發個博客真費勁):

 #include <string.h>
#include <stdio.h>
#include <stdlib.h>

int fun(int store,int flower,int wine)
{
    if(store>5 || flower>10)
        return 0;
    else if(store==5 && flower==9 && wine==1)
    {
        return 1;
    }
    int re=0;
    re+=fun(store+1,flower,wine*2);
    re+=fun(store,flower+1,wine-1);
    return re;
}

void main()
{
    printf("一共%d個方案\n\n",fun(0,0,2));
}

ly666888555
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved