c++ - 使用静态变量进行递归调用的不同输出
问题描述
int fun1(int x){
static int n;
n = 0;
if(x > 0){
n++;
return fun1(x-1)+n;
}
return 0;
}
int fun(int x){
static int n = 0;
if(x > 0){
n++;
return fun(x-1)+n;
}
return 0;
}
谁能告诉我 fun 和 fun1 之间的区别?得到不同的输出!!
解决方案
在fun1
,每次调用该函数时n
都设置为。0
In fun
,在程序开始时n
被初始化,0
但此后仅由 更新n++
。
推荐阅读
- pytorch - RobertaTokenizer() 和 from_pretrained() 初始化 RobertaTokenizer 的方式有什么区别?
- angular - 角度检查和取消数据中的复选框
- javascript - 在javascript(json对象)中删除localstorage的键值
- node.js - 我无法访问解析服务器中云代码函数中的响应对象?
- javascript - 在这种情况下,如何在嵌套页面中使用带有“精确参数”的反应路由器?
- javascript - 滚动时的水平布局
- c++ - 为什么我不能将 std::from_chars 的结果分配给 std::tie?
- bash - 在Linux中将内容文件复制到多个文件
- python - ValueError:预期 min_ndim=3,发现 ndim=2
- python - ImportError:没有名为 selenium windows cmd 的模块