,不知道用C语言递归编的n个布尔变量的真值组合的程序错在哪了
求助,不知道用C语言递归编的n个布尔变量的真值组合的程序错在哪了?
------解决方案--------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
------解决方案--------------------
#include<stdio.h>
#include<string.h>
void Ture(int a[],int i,int n);//求a[i]到a[n]的真值
int main()
{
int n;
int a[100];
while(scanf("%d",&n)!=EOF)//输入布尔变量的个数
{
memset(a,0,sizeof(int)*n);//初始化为0
Ture(a,0,n-1);
}
return 0;
}
void Ture(int a[],int i,int n)
{
int j;
if(i==n+1)
{
printf("<");
for(j=0;j<=n;j++)
{
if(a[j])
printf("ture");
else
printf("false");
if(j!=n)
printf(",");
}
printf(">\n");
}
else
{
Ture(a,i+1,n);
a[i]=1;
Ture(a,i+1,n);
}
}
c语言
布尔变量
真值组合
------解决方案--------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
------解决方案--------------------
a[i]=0;
Ture(a,i+1,n);
a[i]=1;
Ture(a,i+1,n);