我在这里有这个尾递归函数:
def recursiveFunction(n, sum):
if n < 1:
return sum
else:
return recursiveFunction(n-1, sum+n)
c = 998
print(recursiveFunction(c, 0))
Run Code Online (Sandbox Code Playgroud)
它可以工作到n = 997,然后它就会中断并吐出"比较时超出的最大递归深度" RuntimeError.这只是一个堆栈溢出?有办法解决它吗?
拥有数据集并从中计算统计数据很容易.反过来怎么样?
假设我知道某个变量具有平均X,标准偏差Y并假设它具有正态(高斯)分布.生成适合分布的"随机"数据集(任意大小)的最佳方法是什么?
编辑:这种发展从这个问题 ; 我可以根据这种方法制作一些东西,但我想知道是否有更有效的方法来做到这一点.
这是我的第一个Perl脚本.曾经:
#!/usr/bin/perl
if ($#ARGV < 1) { die("usage: <size_in_bytes> <file_name>\n"); }
open(FILE,">" . $ARGV[0]) or die "Can't open file for writing\n";
# you can control the range of characters here
my $minimum = 32;
my $range = 96;
for ($i=0; $i< $ARGV[1]; $i++) {
print FILE chr(int(rand($range)) + $minimum);
}
close(FILE);
Run Code Online (Sandbox Code Playgroud)
其目的是生成一个填充了随机字符的指定大小的文件.
它工作但很慢.写一个10MB的随机文件需要几秒钟.
有没有人有关于如何更快/更好的建议/提示?也可以随意指出常见的新手错误.
我的任务是找到猫王(使用eclipse搜索).有没有我可以用来找他的正则表达式?
"Elvis Operator"(?:)是Java三元运算符的缩写.
我试过\?[\s\S]*[:]但它与多线不匹配.
有没有这样的重构我可以将Elvis变成if-else块?
这不是一个编程问题本身,但在这里.我是一名高级CS本科生,今年夏天我开始为一家中型软件公司实习.我以前做了一些自由职业,但这是我第一次正式(或多或少)被聘为软件开发人员.
我被要求从头开始编写一个内部网站供公司的不同团队使用,并且我在设计它时获得了很大的灵活性.而问题正在于此:我们对事情应该如何工作的几个会议和设计审查,每个人都似乎有一个新功能的想法,甚至是相互矛盾的观点.
到目前为止,我的初始原型已经存活了所有这些,这是我被告知不会期望的 - 但我知道我有一个坚实的设计.虽然我没有落后于计划,但工作进度明显慢于我的预测.其中很多都与松散的规范和常量功能请求和更改有关.
我部署在几个星期,我认为不会是一个问题的alpha,但事情的方式会我不知道这是怎么去上班了.
有没有人有任何想法?提前致谢
class arbit
{
int var;
public:
int method1();
int method1() const;
};
Run Code Online (Sandbox Code Playgroud)
为什么g ++在这里两次声明相同的函数时不会发出警告?
我正在使用JPA和Spring.如果我让Spring处理事务,那么假设EntityManager已正确注入DAO,这就是我的服务层的样子:
MyService {
@Transactional
public void myMethod() {
myDaoA.doSomething();
myDaoB.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我要手动执行事务,我必须确保将EntityManager的实例传递到事务中的每个DAO中.任何想法如何更好地重构?我很难做新的MyDaoA(em)或将em传递给每个DAO方法,如doSomething(em).
MyService {
private EntityManagerFactory emf;
public void myMethod() {
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
MyDaoA myDaoA = new MyDaoA(em);
MyDaoB myDaoB = new MyDaoB(em);
try {
tx.begin();
myDaoA.doSomething();
myDaoB.doSomething();
tx.commit();
} catch(Exception e) {
tx.rollback();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我在/Users/joe/.scala/lib下面有以下jar:
commons-codec-1.4.jar
httpclient-4.1.1.jar
httpcore-4.1.jar
commons-logging-1.1.1.jar
httpclient-cache-4.1.1.jar
httpmime-4.1.1.jar
Run Code Online (Sandbox Code Playgroud)
下面是我用scala编写的test.sh.
#!/bin/sh -v
L=`cd /Users/joe/.scala/lib;pwd`
cp=`echo $L/*.jar|sed 's/ /:/g'`
echo $cp
exec scala -classpath $cp $0 $@
!#
println(new org.apache.commons.httpclient.HttpClient())
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
$ ./test.sh
#!/bin/sh -v
L=`cd /Users/joe/.scala/lib;pwd`
cd /Users/joe/.scala/lib;pwd
cp=`echo $L/*.jar|sed 's/ /:/g'`
echo $L/*.jar|sed 's/ /:/g'
echo $cp
/Users/joe/.scala/lib/commons-codec-1.4.jar:/Users/joe/.scala/lib/commons-logging-1.1.1.jar:/Users/joe/.scala/lib/httpclient-4.1.1.jar:/Users/joe/.scala/lib/httpclient-cache-4.1.1.jar:/Users/joe/.scala/lib/httpcore-4.1.jar:/Users/joe/.scala/lib/httpmime-4.1.1.jar
exec scala -classpath $cp $0 $@
/Users/joe/Desktop/scala/./test.sh:7: error: object httpclient is not a member of package org.apache.commons
println(new org.apache.commons.httpclient.HttpClient())
^
one error found
Run Code Online (Sandbox Code Playgroud)
但是,没有任何类路径依赖关系的简单工作虽然:hello.sh
#!/bin/sh
exec scala "$0" "$@"
!#
println(new java.util.Date())
Run Code Online (Sandbox Code Playgroud)
知道我在第一个例子中做错了什么吗?或者,在使用scala脚本时,设置类路径依赖关系的最佳方法是什么?
假设我有一个包含表'posts'和'tags'的简单数据库.帖子可以有很多标签,标签可以属于很多帖子.
构建数据库的最佳方法是什么?我想过使用list/serialize:
tags
idx tag_id, str tag_name
posts
idx post_id, str title, list tag_ids
Run Code Online (Sandbox Code Playgroud)
或者有另一个表与关联.问题是使用这个我甚至不知道如何构建查询以在我收到帖子时提取相关的标签名称.
posts
idx post_id, str title
post_tags
fk post_id, fk tag_id
Run Code Online (Sandbox Code Playgroud)
其实我不喜欢他们中的任何一个.有没有更好的办法?
这就是我想要完成的事情:
function foo($args) {
switch($args['type']) {
case 'bar':
bar($args['data']); // do something
break;
}
}
// or something like that
Run Code Online (Sandbox Code Playgroud)
这基本上是在PHP 中使用命名参数的一种方式.
现在,为了构建这个$args数组,我被迫编写丑陋的语法,如:
$builtArgs = array('type' => 'bar',
'data' => array(1, 2, 3),
'data2' => array(5, 10, 20)
);
foo($builtArgs);
Run Code Online (Sandbox Code Playgroud)
当我向数组中添加更多维度时,这会变得更加丑陋,并且还迫使我编写大量的array(...)构造.有更好的方法吗?
首先,如果我们可以使用类似Python的语法,就可以完成:
$buildArgs = {'type' : 'bar', 'data' : [1, 2, 3], 'data2' : [5, 10, 20]};
Run Code Online (Sandbox Code Playgroud)
但它是PHP.
从这里的这个问题来看,我正在编写一个枚举包装器,以便有一些方法可以与lambdas一起使用,以在某种程度上模拟ruby在枚举中对块的使用.
class enum {
public $arr;
function __construct($array) {
$this->arr = $array;
}
function each($lambda) {
array_walk($this->arr, $lambda);
}
function find_all($lambda) {
return array_filter($this->arr, $lambda);
}
function inject($lambda, $initial=null) {
if ($initial == null) {
$first = array_shift($this->arr);
$result = array_reduce($this->arr, $lambda, $first);
array_unshift($this->arr, $first);
return $result;
} else {
return array_reduce($this->arr, $lambda, $initial);
}
}
}
$list = new enum(array(-1, 3, 4, 5, -7));
$list->each(function($a) { print $a . "\n";});
// in PHP you can also assign …Run Code Online (Sandbox Code Playgroud) 考虑以下代码:
$tests = array(
array ("a", "b", "c"), array ("1", "2", "3"), array ("!", "@")
);
foreach ($tests as $test)
test($test[0], $test[1], $test[2]);
function test($param1, $param2, $param3) {
// do whatever
}
Run Code Online (Sandbox Code Playgroud)
这将无问题,直到它到达$ test [2],当然在数组中没有第三个元素,导致PHP吐出:
Notice: Undefined offset: 2
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题:
foreach ($tests as $test) {
if (count($x) == 2)
test($test[0], $test[1]);
else
test($test[0], $test[1], $test[2]);
}
function test($param1, $param2, $param3=null) {
// do whatever
}
Run Code Online (Sandbox Code Playgroud)
随着每个$ test数组的大小变大,这变得笨拙.或者我应该忽略通知呢?
编辑:这是我实际上要做的事情:
// wanted this:
function validate() {
$pass = true;
$rules = …Run Code Online (Sandbox Code Playgroud) 在上一篇关于数组更好的语法的文章之后,我决定对数组使用JSON格式,并使用一种将其转换为PHP代码的方法。
请注意,此方法的最终目标是用JSON编写$ config数组并将其转换为PHP代码(因此,我可以避免使用PHP的丑陋数组语法):
该函数适用于任意大小和尺寸的数组,也许我可以通过使其自动缩进来改进它,但是没有更多的东西了。这里有人对如何改善它有任何建议吗?