两个函数相互调用怎么办啊?如题
double Funb(int n);
double Func(int n);
double Func(int n){
double c,c1,k1,k2;
if (n=1)
{c=c1;
cout<<c<<endl;}
else
{
c=Func(n-1)*(1+k1-k2*Funb(n-1));
cout<<c<<endl;}
return c;
}
double Funb(int n){
double b,b1,k3,k4;
if (n=1)
{b=b1;
cout<<b<<endl;}
else
{b=Funb(n-1)*(1-k3+k4*Func(n-1));
cout<<b<<endl;}
return b;
}
void main(){
int n;
double k1,k2,k3,k4;
double b1,c1;
double B,C;
cout<<"请输入天数N"<<endl;
cin>>n;
cout<<"请输入k1到k4的值"<<endl;
cin>>k1>>k2>>k3>>k4;
cout<<"请输入初始值b1,c1"<<endl;
cin>>b1>>c1;
B=Funb(n);
C=Func(n);
}
1. 将两个函数作前置声明.这样就可以相互调用了.
2. 你的变量名与函数名重复,导致编译器不知道如何解析.
这是改正后的代码.
如果还有不清楚请加QQ群:58057516.大家共同讨论进步.
函数之间是不是可以互相调用?不可以什么?
两个函数之间可以相互调用,但如果没有退出机制,会陷入死循环的。
你可以试下下面的代码,注释的部分是控制相互调用次数
#include <stdio.h>
void funA();
void funB();
//int callCount=0;
int main(void)
{
funA();
return 0;
}
void funA()
{
printf("funA is working...\n");
// if(++callCount<10)
funB();
}
void funB()
{
printf("funB is working...\n");
funA();
}
函数相互调用是个啥原理,c语言
函数的调用是借助”栈“来实现,
系统将整个程序运行时所需的数据空间安排在一个栈中,
每当调用一个函数时,就在栈顶分配一个存储区,进行压栈操作,
每当一个函数退出时,就释放它的存储区,进行出栈操作,
当前时刻正在运行的函数永远都在栈顶位置
至于会不会变成死循环,这要看函数内部的具体实现
比如
# include <stdio.h>
f();
g();
int main(void)
{
f();
return 0;
}
f()
{
printf("AAAAAA\n");
g();
}
g()
{
printf("BBBBB\n");
f();
}
f()调用g() 压栈
g()又调用f() 还是压栈
这种情况就类似于死循环,但是运行时不会永远输出
原因就是函数的调用在栈中执行
栈是有一定的空间
当栈空间用完即发生栈溢出时输出就会终止
仅供参考!
追问
那怎么把这个程序改动一下,可以把它变成 非无限循环的 两个函数相互调用的程序呢??
----------------------------------------
对不起 我选错最佳答案了。。不是故意的。。我再提个问你下吧
如何使用腾讯云函数搭载一个纯HTML+CSS+JS的静态网页?
用对象存储加CDN就行了,你用函数计算不容易处理这种有额外CSS和js文件的