Para el primero, ten cuidado con los tipos de datos (depende en qué lenguaje programes), prueba poniendo
sum = sum + 1.0/i;
(sum debe ser flotante).
Para el segundo, el enunciado está bien (quizás un poco mal expresado), pero te dice que tienes que sumar todas las cifras de un número, y si el número que te sale tiene una cifra ya vale, pero si tiene más de 1 cifra entonces lo haces otra vez (sumas todas sus cifras)... así hasta el número final sólo tenga una cifra (<10).