小编Pet*_*234的帖子

如何如此快速地评估 const expr

我一直在尝试在编译时计算的 const 表达式。但是我玩了一个在编译时执行时看起来非常快的示例。

#include<iostream> 

constexpr long int fib(int n) { 
    return (n <= 1)? n : fib(n-1) + fib(n-2); 
} 

int main () {  
    long int res = fib(45); 
    std::cout << res; 
    return 0; 
} 
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,大约需要 7 秒才能运行。到现在为止还挺好。但是,当我更改long int res = fib(45)const long int res = fib(45)它需要没有哪怕一秒钟。据我了解,它是在编译时评估的。 但是编译大约需要0.3秒

编译器怎么能这么快地评估它,但在运行时却需要更多的时间?我正在使用 gcc 5.4.0。

c++ constants constexpr

13
推荐指数
1
解决办法
377
查看次数

Android首选项活动IllegalArgumentException:此活动的无效片段

我的偏好活动有问题.我创建了偏好屏幕和一个偏好活动.在Android 4.2.2的手机上,它运行正常.但是在使用Android 5.0的Android Emulator上,它崩溃了这个错误:IllegalArgumentException: Invalid fragment for this activity. 这是因为这段代码吗?:

 @Override
    protected boolean isValidFragment(String fragmentName) {
        return MyPreferenceFragment.class.getName().equals(fragmentName);
    }
Run Code Online (Sandbox Code Playgroud)

第二个首选项片段是MyExportPreferenceFragment ...如何将它们与一个活动一起使用?

谢谢你的帮助

//编辑:找到一个解决方案,但也许它太hacky ^^

@Override
    protected boolean isValidFragment(String fragmentName) {
        if(MyPreferenceFragment.class.getName().equals(fragmentName)) {
            return MyPreferenceFragment.class.getName().equals(fragmentName);
        }
        else {
            return MyExportPreferenceFragment.class.getName().equals(fragmentName);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这个可以吗?或者这样做是危险的吗?

android preferences android-fragments

8
推荐指数
1
解决办法
3418
查看次数

Z3 Prover返回错误的解决方案

我正在尝试使用Python中的Z3 Thoerem Prover解决一个方程式。但是我得到的解决方案是错误的。

from z3 import *    
solv = Solver()
x = Int("x")
y = Int("y")
z = Int("z")
s = Solver()
s.add(x/(y+z)+y/(x+z)+z/(x+y)==10, x>0, y>0, z>0)
s.add()
print(s.check())
print(s.model())
Run Code Online (Sandbox Code Playgroud)

我得到这个解决方案:

[z = 60, y = 5, x = 1]
Run Code Online (Sandbox Code Playgroud)

但是,当您将这些值填写到给定的方程式中时,结果为:10.09735182849937。但是我想找到的是一个精确的解决方案。我究竟做错了什么?

谢谢你的帮助 :)

python z3 z3py

4
推荐指数
1
解决办法
293
查看次数

如何正确推导二次成本函数

鉴于二次成本函数f(a) = 1/2 (a-y)^2,我知道函数的导数aa - y.但我不知道如何到达那里......你能给我一个链接,这很容易解释吗?

machine-learning quadratic derivative neural-network

1
推荐指数
1
解决办法
1014
查看次数