**救救孩子吧,为什么这个代码函数递归结束时把所有的判断都取消了输出出来的还是自己想要的,哪位大佬给我解释一下,但是想输出满足条件的i[k]怎么就办不到啊**

救救孩子吧,为什么这个代码函数递归结束时把所有的判断都取消了输出出来的还是自己想要的,哪位大佬给我解释一下,但是想输出满足条件的i[k]怎么就办不到啊
求求大佬讲解一下吧
源码:
#include<stdio.h>
#define N 1000
int i[N];
int Min;
int min;
int money[N]={0};
int m[N];
int y;
int l;int x;
int Functions(int n,int sum)
{ int s=0;+
int h=0;
x=y;
if(n==0)
{
/* for(int k=0;k<n;k++)
s+=i[k]money[k];
if(s<=sum)//找出满足条件的最小值
{
for(int k=0;k<n;k++)
h+=i[k];
if(h<min)
min=h;
}
///注释里面是我去掉的代码
return x;
}
for(i[n-1]=0;i[n-1]<=1;i[n-1]++)//递归,便于运行未知嵌套循环
{ n–;
Functions(n,sum);
n++;
}
}
int main()
{
int s=0,j,sum,n,minx;
printf(“请输入账户余额\n”);
scanf("%d",&sum);//输入账号余额
printf(“请输入想要兑换的支票数量\n”);
scanf("%d",&n);//输入想要兑换的支票数量
min=n;
y=n;
for(j=0;j<n;j++)//循环输入每个支票的面值金额
{
printf(“请输入第%d张支票的面额\n”,j+1);
scanf("%d",&money[j]);
}
Min=money[0];
for(j=0;j<n;j++)//找出n张支票中面值最小的支票
if(money[j]<Min)
Min=money[j];
for(j=0;j<n;j++)//计算所有想要兑换的支票总面额
s+=money[j];
if(s<=sum)//若总面额小于等于余额总数,输出如下
printf(“没有退票费\n”);
else
{
for(int k=0;k<n;k++)
if(money[k]>sum-Min&&money[k]<=sum)//单写出当某一支票满足条件时的情况
{
printf(“你需要支付%d美元\n”,(n-1)*20);
return 0;
}
minx=Functions(n,sum);//运用函数
printf(“你需要支付%d美元\n”,(n-minx)*20);//输出退票费
}
printf("%d %d",minx,x);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值